zoukankan      html  css  js  c++  java
  • Construct Binary Tree from Inorder and Postorder Traversal

    题目

    Given inorder and postorder traversal of a tree, construct the binary tree.

    Note:
    You may assume that duplicates do not exist in the tree.

    方法

    依据树的中序遍历和后序遍历,来恢复树,使用递归的思想。

    	TreeNode getTree(int[] inorder, int inStart, int inEnd, int[] postorder, int postStart, int postEnd) {
    		if (inStart >= inEnd) {
    			return null;
    		}
    		int cur = postorder[postEnd - 1];
    		TreeNode root = new TreeNode(cur);
    		int i = 0;
    		int j = inStart;
    		while(inorder[j] != cur) {
    			j++;
    			i++;
    		}
    		
    		
    		root.left = getTree(inorder, inStart, inStart + i, postorder, postStart, postStart + i);
    		root.right = getTree(inorder, inStart + i + 1, inEnd, postorder, postStart + i, postEnd - 1);
    		
    		return root;
    	}
        public TreeNode buildTree(int[] inorder, int[] postorder) {
        	if (inorder == null) {
        		return null;
        	}
        	int len = inorder.length;
        	return getTree(inorder, 0, len, postorder, 0, len);
        }


  • 相关阅读:
    14.会场安排问题(L4)
    图形化调试工具DDD
    sking
    全排列
    DNS
    一种排序
    多边形重心问题
    街区最短路径问题
    Fibonacci数
    python url解析
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7105574.html
Copyright © 2011-2022 走看看