【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>
相關文章
- [leetcode]binary-tree-inorder-traversalLeetCode
- LeetCode | 144. Binary Tree Preorder TraversalLeetCode
- Leetcode 144. Binary Tree Preorder TraversalLeetCode
- Leetcode 94. Binary Tree Inorder TraversalLeetCode
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 由中序序列和先序序列確定一顆二叉樹二叉樹
- 先序、中序、後序序列的二叉樹構造演算法二叉樹演算法
- LeetCode之Construct String from Binary Tree(Kotlin)LeetCodeStructKotlin
- Construct String from Binary TreeStruct
- LeetCode 297. Serialize and Deserialize Binary Tree 二叉樹序列化反序列化LeetCode二叉樹
- LeetCode-106-從中序與後序遍歷序列構造二叉樹LeetCode二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- Leetcode 889. 根據前序和後序遍歷構造二叉樹LeetCode二叉樹
- 還原二叉樹(先序+中序-〉後序)二叉樹
- Binary Tree Level Order Traversal [LEETCODE]LeetCode
- LeetCode-105-從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode | 145. Binary Tree Postorder TraversalLeetCode
- Leetcode 145. Binary Tree Postorder TraversalLeetCode
- 已知二叉樹的先序和後序求任意一中序二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹 | PytLeetCode二叉樹
- The order of a Tree (二叉搜尋樹+先序遍歷)
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- 演算法 -- 實現二叉樹先序,中序和後序遍歷演算法二叉樹
- 二叉搜尋樹的後序遍歷序列
- 7-1 根據後序和中序遍歷輸出先序遍歷 (25 分)
- 二叉樹的四種遍歷方法:先序,中序,後序,層序二叉樹
- 【根據前序和中序遍歷構造二叉樹】棧+迭代 || 遞迴二叉樹遞迴
- 用數學歸納法證明前序序列和中序序列唯一的確定一個二叉樹序列二叉樹
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 106. 從中序與後序遍歷序列構造二叉樹——Java實現二叉樹Java
- Java中用遞迴和迭代實現二叉樹的中序( InOrder )遍歷Java遞迴二叉樹
- LeetCode 272 Closest Binary Tree Traversal II 解題思路LeetCode
- 二叉樹的先中後序遍歷二叉樹
- 二叉樹的先,中,後序遍歷二叉樹
- LeetCode 545. Boundary of Binary Tree 二叉樹邊界LeetCode二叉樹
- 二叉樹中序和後序遍歷表示式二叉樹