leetCode解题报告之构造二叉树(递归)(二)

2014-11-24 11:19:11 · 作者: · 浏览: 2
inorder,int[] postorder) { if (postorder.length == 0 || inorder.length == 0) return null; int len = inorder.length; postIndex = postorder.length - 1; return createTreeNode(postorder,inorder,0,len-1); } public TreeNode createTreeNode(int[] inorder, int[] postorder, int inLeft, int inRight){ if (inLeft == inRight){ TreeNode node = new TreeNode(inorder[inLeft]); node.left = null; node.right = null; return node; } int val = postorder[postIndex]; int findIndex = inLeft; while (findIndex != inRight && val != inorder[findIndex]){ findIndex++; } TreeNode leftNode; TreeNode rightNode; if (findIndex == inRight){ rightNode = null; }else{ --postIndex; rightNode = createTreeNode(inorder,postorder,findIndex+1,inRight); } if (findIndex == inLeft){ leftNode = null; }else{ --postIndex; leftNode = createTreeNode(inorder,postorder,inLeft,findIndex-1); } TreeNode root = new TreeNode(val); root.left = leftNode; root.right = rightNode; return root; } }


博主算法方面比较薄弱,写得不好,欢迎大家给我留言哈!!!