【LeetCode】Construct Binary Tree from Preorder and Inorder Traversal 根據先序序列和中序序列恢復二叉樹
題目:Construct Binary Tree from Preorder and Inorder Traversal
<span style="font-size:18px;">/**LeetCode
* 題意:給定一個二叉樹的先序遍歷和中序遍歷的序列,重建二叉樹
* 思路:先序遍歷的第一個節點是父節點,中序遍歷從第一個節點到父節點的都是父節點的左子樹,父節點後面的都是父節點的右子樹
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
package javaTrain;
public class Train20 {
public TreeNode buildTree(int[] preorder, int[] inorder) {
int n = preorder.length;
if(n == 0) return null;
int m = 0;
int num = preorder[0];
boolean tag = true;
for(int i = 0;i < n;i++){
if(inorder[i] == num)
break;
m++;
}
int[] leftPre = new int[m];
int[] leftIn = new int[m];
int[] rightPre = new int[m-n-1];
int[] rightIn = new int[m-n-1];
for(int j = 0;j < n;j++){
if(j == num-1) tag = false;
if(tag){
leftIn[j] = inorder[j];
leftPre[j] = preorder[j+1];
}
else{
rightIn[j-num-1] = inorder[j];
rightPre[j] = preorder[j+1];
}
}
TreeNode root = new TreeNode(num);
root.left = buildTree(leftPre,leftIn);
root.right = buildTree(rightPre,rightIn);
return root;
}
}
</span>
相關文章
- Construct Binary Tree from Preorder and Inorder TraversalStruct
- Construct Binary Tree from Preorder and Inorder Traversal(前序遍歷和中序遍歷樹構造二叉樹)...Struct二叉樹
- Leetcode Construct Binary Tree from Preorder and Inorder TraversalLeetCodeStruct
- Construct Binary Tree from Preorder and Inorder Traversal leetcode javaStructLeetCodeJava
- Leetcode 105 Construct Binary Tree from Preorder and Inorder TraversalLeetCodeStruct
- 根據二叉樹的先序序列和中序序列還原二叉樹並列印後序序列二叉樹
- Construct Binary Tree from Inorder and Postorder TraversalStruct
- Leetcode Construct Binary Tree from Inorder and Postorder TraversalLeetCodeStruct
- Binary Tree Inorder/Preorder Traversal 返回中序和前序/遍歷二叉樹的元素集合二叉樹
- Construct Binary Tree from Inorder and Postorder Traversal Traversal leetcode javaStructLeetCodeJava
- Leetcode-Construct Binary Tree from inorder and preorder travesalLeetCodeStruct
- Leetcode 106. Construct Binary Tree from Inorder and Postorder TraversalLeetCodeStruct
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 由中序序列和先序序列確定一顆二叉樹二叉樹
- leetcode - Binary Tree Preorder TraversalLeetCode
- Leetcode Binary Tree Preorder TraversalLeetCode
- Leetcode Binary Tree Inorder TraversalLeetCode
- Leetcode-Construct Binary Tree from inorder and postorder travesalLeetCodeStruct
- 先序、中序、後序序列的二叉樹構造演算法二叉樹演算法
- 【LeetCode 144_二叉樹_遍歷】Binary Tree Preorder TraversalLeetCode二叉樹
- Binary Tree Preorder Traversal leetcode javaLeetCodeJava
- [leetcode]binary-tree-inorder-traversalLeetCode
- Leetcode-Binary Tree Inorder TraversalLeetCode
- Binary Tree Inorder Traversal leetcode javaLeetCodeJava
- LeetCode 94 [Binary Tree Inorder Traversal]LeetCode
- (樹)根據中序後序構建二叉樹二叉樹
- Leetcode 94. Binary Tree Inorder TraversalLeetCode
- LeetCode | 144. Binary Tree Preorder TraversalLeetCode
- Leetcode 144. Binary Tree Preorder TraversalLeetCode
- LeetCode144:Binary Tree Preorder TraversalLeetCode
- leetcode [python] 【144】 Binary Tree Preorder TraversalLeetCodePython
- 二叉樹先知道後序和中序,求先序二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- LeetCode 297. Serialize and Deserialize Binary Tree 二叉樹序列化反序列化LeetCode二叉樹
- 還原二叉樹(先序+中序-〉後序)二叉樹
- LeetCode-106-從中序與後序遍歷序列構造二叉樹LeetCode二叉樹
- 已知二叉樹的先序和後序求任意一中序二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹