图解:LeetCode897. 递增顺序搜索树(递归解法)

本文通过图解方式详细解析了LeetCode 897题“递增顺序搜索树”的递归解法。该算法将根节点移动到左子树最右叶子节点的右侧,并将根节点的右指针指向右子树的最左侧节点,递归处理原左、右子树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图解:LeetCode897. 递增顺序搜索树(递归解法)

在这里插入图片描述
解题思路
排列成一个递增顺序搜索树 即 将root移至root左子树的最右边的叶子结点的right上,
并且root的right等于右子树的最左叶子节点

例:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
在这里插入图片描述
1.将root移至root左子树的最右边的叶子结点的right上
在这里插入图片描述
2.root的right等于右子树的最左叶子节点
在这里插入图片描述
3.然后递归处理root原来的左节点和右节点即可

第一次画图,画的不好,请见谅!

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode increasingBST(TreeNode root) {
        if(root == null) return null;
		TreeNode cur = root;
		TreeNode left = root.left;
		if(root.left != null) {
			cur =cur.left;
			while(cur.right != null) {
				cur = cur.right;
			}
			root.left = null;
			cur.right = root;
		}
		
		if(root.right != null) {
			root.right = increasingBST(root.right);
		}
		return left == null ? root : increasingBST(left);
    }
}

链接:https://leetcode-cn.com/problems/increasing-order-search-tree/solution/tu-jie-897-di-zeng-shun-xu-sou-suo-shu-d-tn83/

对你有帮助的话 不妨点个赞吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值