LeetCode OJ:Construct Binary Tree from Preorder and Inorder Traversal(从前序以及中序遍历结果中构造二叉树)...
生活随笔
收集整理的這篇文章主要介紹了
LeetCode OJ:Construct Binary Tree from Preorder and Inorder Traversal(从前序以及中序遍历结果中构造二叉树)...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
從前序以及中序的結果中構造二叉樹,這里保證了不會有兩個相同的數字,用遞歸構造就比較方便了:
?java版本的代碼如下所示,方法上與上面的沒什么區別:
1 public class Solution { 2 public TreeNode buildTree(int[] preorder, int[] inorder) { 3 return createTree(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1); 4 } 5 6 public TreeNode createTree(int[] preorder, int preBegin, int preEnd, int[] inorder, int inBegin, int inEnd){ 7 if(preBegin > preEnd) 8 return null; 9 int rootVal = preorder[preBegin]; 10 int i = inBegin; 11 for(; i <= inEnd; ++i){ 12 if(inorder[i] == rootVal) 13 break; 14 } 15 int leftLen = i - inBegin; 16 TreeNode root = new TreeNode(rootVal); 17 root.left = createTree(preorder, preBegin + 1, preBegin + leftLen ,inorder, inBegin, i - 1); //這里的邊界條件應該注意 18 root.right = createTree(preorder, preBegin + 1 + leftLen, preEnd, inorder, i + 1, inEnd); 19 return root; 20 } 21 }?
轉載于:https://www.cnblogs.com/-wang-cheng/p/4910264.html
總結
以上是生活随笔為你收集整理的LeetCode OJ:Construct Binary Tree from Preorder and Inorder Traversal(从前序以及中序遍历结果中构造二叉树)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: String、StringBuffer、
- 下一篇: Oracle(一)