樹之105 Construct Binary Tree from Preorder and Inorder Traversal
阿新 • • 發佈:2019-01-02
題目連結:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
參考連結:https://blog.csdn.net/qq_36172443/article/details/81105258
https://www.lintcode.com/problem/clone-binary-tree/description
https://www.cnblogs.com/phdeblog/p/9309219.html
首先你得理解如何遞迴建立一顆二叉樹,然後才能理解本題。網上有很多解法都是通過變化中序遍歷和前序續遍歷的index來求解本題,這樣的解法很容易弄錯。如何變化index這是一個難點,該解法通過陣列copy避免了計算index。
public TreeNode buildTree(int[] pre, int[] in) { if (pre.length == 0) { return null; } TreeNode node = null; for (int i = 0; i < in.length; i++) { if (pre[0] == in[i]) { node = new TreeNode(pre[0]); node.left= buildTree( Arrays.copyOfRange(pre, 1, i + 1), Arrays.copyOfRange(in, 0, i)); node.right = buildTree( Arrays.copyOfRange(pre, i + 1, pre.length), Arrays.copyOfRange(in, i + 1, in.length)); } }return node; }