算法第十七天|二叉树

617. 合并二叉树

  public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if (root1 == null) {
            return root2;
        }
        if (root2 == null) {
            return root1;
        }
        TreeNode treeNode = new TreeNode(root1.val + root2.val);

        treeNode.left = mergeTrees(root1.left, root2.left);
        treeNode.right = mergeTrees(root1.right, root2.right);
        return treeNode;
    }

700. 二叉搜索树中的搜索

  public TreeNode searchBST(TreeNode root, int val) {
        // 二叉搜索树,根节点比左子树所有节点的值都大,比右子树所有根节点的值都小
        if (root == null) {
            return null;
        }

        if (root.val > val) {
            return searchBST(root.left, val);
        } else if (root.val < val){
            return searchBST(root.right, val);
        } else  {
            return root;
        }
    }

98. 验证二叉搜索树

 private List<Integer> list = new ArrayList<>();

    public boolean isValidBST(TreeNode root) {
        // 二叉搜索树,中序遍历的结果是一个有序序列
        getPreList(root);
        int preValue = list.get(0);
        for (int i = 1; i < list.size(); i++) {
            if (list.get(i) <= preValue) {
                return false;
            } else {
                preValue = list.get(i);
            }
        }
        return true;
    }

    private void getPreList(TreeNode root) {
        if (root == null) {
            return;
        }
        getPreList(root.left);
        list.add(root.val);
        getPreList(root.right);
    }

注意一点:二叉搜索树,中序遍历的结果是一个有序序列。只要知道这一点,问题就可以轻松解答了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容