Day23_BT, Leetcode 669, 108, and 538

文章分享了在LeetCode上解决三个关于二叉树问题的思路。分别是寻找二叉搜索树中两个节点的最低共同祖先,有序数组构建二叉搜索树,以及将BST转换为所有节点值大于其子节点的树。解题过程中涉及递归和二叉树性质的应用。
摘要由CSDN通过智能技术生成

 Leetcode 669:

- LeetCode

题目的第一想法:

这道题的需要找的是两个节点的最低共同祖先。我的第一想法是先找到一个在range内的数字,但我并不是很确定我第一个找到的数字是否为最低共同祖先。另外一个卡住我的点在于对于两个最低节点,我猜测leetcode是随机分配的。也就是说p可能是更小数字,也可能是更大的数字。所以在检查的时候应该同时检查两个数字来避免nullpointerexception的发生。

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if (root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q);
        if (root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q);
        return root;
    }
}

看完代码随想录之后的想法:

感觉这道题是否能发现第一个遍历到的数字就是最低共同祖先是一个坎

Leetcode 701:

Leetcode

题目的第一想法:

这道题很简单,因为并不涉及到树的rebalance。所以只要找到最正确的位置加入节点就好。然后节点分为leaf,之包含一个子树的节点。在遍历的过程中还需要想到遍历的方式。到底是遍历一条分叉还是需要遍历全树。

class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return sortedArrayToBST(nums, 0, nums.length - 1);
    }

    public TreeNode sortedArrayToBST(int[] nums, int low, int high){
        if(low == high) return new TreeNode(nums[low]);
        else if(low > high) return null;
        int mid = (low + high) / 2;
        return new TreeNode(nums[mid], sortedArrayToBST(nums, low, mid - 1), sortedArrayToBST(nums, mid + 1, high));   
    }
}

看完代码随想录之后的想法:

这道题我感觉写法需要注意的小细节还是有几个的。需要注意自己的逻辑。

Leetcode 538:

- LeetCode

题目的第一想法:

这道题的要求是把树的每个节点都变为比当前树存在的所有值大于当前节点本身的树。这道题本身是BST所以是一个天然右中左的顺序。只要按照当前顺序记下当前的数值一直相加就好了。

class Solution {
    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        if(root == null) return null;
        convertBST(root.right);
        sum += root.val;
        root.val = sum;
        convertBST(root.left);
        return root;
    }
}

看完代码随想录之后的想法:

这道题可以使用pre,也可以直接使用数字记录。本质上的逻辑是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值