java - leetcode106 根据中序遍历和后序遍历如何还原二叉树?
天蓬老师
天蓬老师 2017-04-18 09:46:11
0
0
360
public class ConstructBinaryTreeFromInorderAndPostorderTraversal { int pInorder; // index of inorder array int pPostorder; // index of postorder array private TreeNode buildTree(int[] inorder, int[] postorder, TreeNode end) { if (pPostorder < 0) { return null; } // create root node TreeNode n = new TreeNode(postorder[pPostorder--]); // if right node exist, create right subtree if (inorder[pInorder] != n.val) { n.right = buildTree(inorder, postorder, n); } pInorder--; // if left node exist, create left subtree if ((end == null) || (inorder[pInorder] != end.val)) { n.left = buildTree(inorder, postorder, end); } return n; } public TreeNode buildTree(int[] inorder, int[] postorder) { pInorder = inorder.length - 1; pPostorder = postorder.length - 1; return buildTree(inorder, postorder, null); } public static void main(String[] args) { int[] a = new int[]{ 1,2,3,4,5,6,7 } ; int[] b = new int[]{ 1,3,2,5,7,6,4 } ; TreeNode t = new ConstructBinaryTreeFromInorderAndPostorderTraversal().buildTree(a , b) ; System.out.println(t); } }

这个是leetcode地址: https://leetcode.com/problems...

该如何理解这个算法?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆 (0)
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!