105. Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:中国输电网络 编辑:程序博客网 时间:2024/06/07 05:03
原题
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
代码实现
the most important function in solving this issue is
private TreeNode bulidTree(int preStart, int inStart, int inEnd) ;
Plus, preStart index in preorder is the root index, which is also the separate point in inorder and it’s left is left subtree and right is right subtree.
public class Solution { private int[] _preorder; //preorder array private int[] _inorder; //inorder array public TreeNode BuildTree(int[] preorder, int[] inorder) { _preorder = preorder; _inorder = inorder; //if(_preorder.Length==0 || inorder.Length==0) return null; //if(prorder.Length!=inorder.Length) return null; return bulidTree(0,0,_inorder.Length-1); } //preStart: index of root of tree //inStart: of inorder tree, inStart ~ root index - 1 -> left tree //EndStart:of inorder tree, root index + 1 ~ inEnd -> right tree private TreeNode bulidTree(int preStart, int inStart, int inEnd) { if (preStart > _preorder.Length - 1 || inStart > inEnd) { return null; } TreeNode root = new TreeNode(_preorder[preStart]); // find the index of current root in inorder. int inIndex = curRootIndex(inStart, inEnd, root); root.left = bulidTree(preStart + 1, inStart, inIndex - 1); //right subtree begins position in preorder preStart += inIndex - inStart + 1; root.right = bulidTree(preStart, inIndex + 1, inEnd); return root; } private int curRootIndex(int inStart, int inEnd, TreeNode root) { for (int i = inStart; i <= inEnd; i++) { if (_inorder[i] == root.val) { return i; } } return -1; } }
leetcode-solution库
leetcode算法题目解决方案每天更新在github库中,欢迎感兴趣的朋友加入进来,也欢迎star,或pull request。https://github.com/jackzhenguo/leetcode-csharp
2 0
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode --- 105. Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode] 105.Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal LeetCode
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode#105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- IEEE简单介绍
- final关键字
- EI简单介绍
- SCI简单介绍
- 解决 通过JDBC向MySQL插入数据的中文乱码 问题
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- ggplot作图2
- 去掉Box边框刻度
- 软考是有成本投入的
- 日期计算器
- 关于0.3-0.2 != 0.1 的问题
- VNC远程连接服务器出现 A problem has occurred and the system can't recover. 错误
- 微信模板消息换行
- Android开发之RecyclerView添加头部和底部