LeetCode之通过二叉树的中序遍历和前序遍历来还原二叉树
来源:互联网 发布:人工智能 情绪 编辑:程序博客网 时间:2024/05/22 02:08
问题描述:
/** * Given preorder and inorder traversal of a tree, construct the binary tree. * * Note: * * You may assume that duplicates do not exist in the tree. */
根据给出的二叉树的中序遍历和前序遍历的结果,来还原这棵二叉树,假定这个二叉树没有重复的孩子。
这个问题和我的前面一篇博文一样。前面那篇是根据中序和后序来还原二叉树,所以只要换几个参数即可。建议先看一下我的前面那篇博文。代码如下:
public static TreeNode buildTree(int[] inorder, int[] preorder) { return buildTree(inorder, 0, inorder.length - 1, preorder, 0, preorder.length - 1); } public static TreeNode buildTree(int[] inorder, int is, int ie, int[] preorder, int ps, int pe) { if (is > ie || ps > pe) return null; int rootVal = preorder[ps]; TreeNode root = new TreeNode(rootVal); for (int i = is; i <= ie; i++) { if (inorder[i] == rootVal) { TreeNode left = buildTree(inorder, is, i - 1, preorder, ps+1, ps+ i - is ); TreeNode right = buildTree(inorder, i + 1, ie, preorder, pe- ie + i+1, pe ); root.left = left; root.right = right; } } return root; }
换参数的地方就是在preorder序列中寻找左右子树范围的地方。
0 0
- LeetCode之通过二叉树的中序遍历和前序遍历来还原二叉树
- LeetCode之通过二叉树的中序遍历和后序遍历还原二叉树
- 【二叉树】根据二叉树的中序遍历和前序遍历,还原二叉树
- 根据前序遍历-中序遍历结果 来还原一颗二叉树
- 根据二叉树的前序遍历和中序遍历(或者中序遍历和后序遍历)还原二叉树
- 二叉树的先序遍历、中序遍历、后续遍历和二叉树还原
- 由二叉树的前序遍历和后续遍历结果还原二叉树,并后序遍历打印
- 通过二叉树的前序和中序遍历新建一个二叉树
- 已知二叉树的前序遍历和中序遍历求后序遍历(二叉树)
- 二叉树系列:已知二叉树的中序遍历和前序遍历,求后序遍历
- 根据前序遍历和中序遍历还原二叉树
- 数据结构——根据前序遍历和中序遍历还原二叉树
- 已知二叉树的前序遍历和中序遍历重建二叉树(二叉树)
- 二叉树的遍历:前序遍历、中序遍历和后序遍历
- 根据一个树的中序遍历和前序遍历数据,还原一个二叉树的思考
- LeetCode之二叉树的前序遍历
- 二叉树经典面试题5~由前序遍历和中序遍历还原二叉树
- leetcode | 二叉树的前序遍历、中序遍历、后续遍历的非递归实现
- Eclipse中导入外部jar包
- JavaScript中的匿名函数及函数的闭包
- logistic回归笔记
- Linux下chkconfig命令详解
- poj2337 Catenyms(求欧拉路或欧拉回路的路径)
- LeetCode之通过二叉树的中序遍历和前序遍历来还原二叉树
- 关于ZipArchive 解压中文编码乱码的问题
- ext Ext.grid.ColumnModel自适应宽度去除右边空白
- MySQL常用操作(留作备份)
- 算法 打印全排列
- 安装软件遇到的问题
- 【CodeForces】[604A]Uncowed Forces
- WPF 无刷新删除Grid控件/数据
- linux下动态链接库和静态链接库的使用和区别