1305. 两棵二叉搜索树中的所有元素(中序遍历)

2023-10-27

给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.

示例 1:

在这里插入图片描述
输入:root1 = [2,1,4], root2 = [1,0,3]
输出:[0,1,1,2,3,4]
示例 2:
在这里插入图片描述

输入:root1 = [1,null,8], root2 = [8,1]
输出:[1,1,8,8]

提示:

每棵树的节点数在 [0, 5000] 范围内
-105 <= Node.val <= 105

自己的做法:
二叉搜索树那么直接中序遍历便会得到一个顺序的结果,可以先把顺序的结果暂存下来,然后这个问题变成了合并两个有序数组的问题,直接双指针结束。

中序遍历的递归代码如下:

会把结果存在ans列表里

private void Inorder(TreeNode root , List<Integer> ans)
    {
        if(root == null)
            return;
        else
        {
            Inorder(root.left ,ans);
            ans.add(root.val);
            Inorder(root.right,ans);
        }

    }

总体代码如下:

class Solution {
    public List<Integer> getAllElements(TreeNode root1, TreeNode root2) {
        List<Integer> ans1 = new ArrayList<Integer>();
        List<Integer> ans2 = new ArrayList<Integer>();
        List<Integer> ans = new ArrayList<Integer>();
        Inorder(root1,ans1);
        Inorder(root2,ans2);

        int n = ans1.size();
        int m = ans2.size();
        int i = 0 , j = 0;
        while (i < n && j < m)
        {
            if(ans1.get(i) < ans2.get(j))
            {
                ans.add(ans1.get(i));
                i++;
            }
            else
            {
                ans.add(ans2.get(j));
                j++;
            }
        }
        while ( i < n)
        {
            ans.add(ans1.get(i));
            i++;
        }
        while (j < m)
        {
            ans.add(ans2.get(j));
            j++;
        }
        return ans;
    }

    private void Inorder(TreeNode root , List<Integer> ans)
    {
        if(root == null)
            return;
        else
        {
            Inorder(root.left ,ans);
            ans.add(root.val);
            Inorder(root.right,ans);
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1305. 两棵二叉搜索树中的所有元素(中序遍历) 的相关文章

  • qt学习笔记4:QMainWindow 菜单栏、工具栏、状态栏、铆接部件、

    在创建基类的时候 有三大选择 一个是QWidge 空窗口 另一个就是QMainWindow QMainWindow是一个为用户提供主窗口的类 包含一个菜单栏 多个工具栏 多个链接部件 一个状态栏以及一个中心部件 是许多应用程序的基础 如文本
  • 深度学习实战之车牌识别项目

    车牌识别项目 不经常上线 既然有人想要代码 现在我将它发出来 不过需要你们下载 具体下载方法 我想你们都懂得 https download csdn net download weixin 43648821 11423543 本博客关于深度
  • 为什么MySql喜欢B+树

    目录 怎样的索引的数据结构是好的 什么是二分查找 什么是二分查找树 什么是自平衡二叉树 什么是 B 树 什么是 B 树 1 单点查询 2 插入和删除效率 3 范围查询 MySQL 中的 B 树 总结 参考文献 为什么 MySQL 采用 B

随机推荐