zoukankan      html  css  js  c++  java
  • leetcode

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

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

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    struct TreeNode
    {
    	int val;
    	TreeNode *left;
    	TreeNode *right;
    	TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution {
    public:
        TreeNode *buildTree(std::vector<int> &inorder, std::vector<int> &postorder) {
    		return buildBinTree(inorder,0,inorder.size()-1,postorder,0,postorder.size()-1);
    	}
    private:
    	TreeNode *buildBinTree(std::vector<int> &inorder,int inStart,int inEnd,std::vector<int> &postorder,int postStart,int postEnd)
    	{
    		if(inStart > inEnd || postStart > postEnd) return NULL;
    		TreeNode *root = new TreeNode(postorder[postEnd]);
    		int rootIndex = 0;
    		for (int i = inStart; i <= inEnd; i++)
    		{
    			if(inorder[i] == root->val)
    			{
    				rootIndex = i;
    				break;
    			}
    		}
    		int len = rootIndex - inStart;
    		root->left = buildBinTree(inorder,inStart,rootIndex-1,postorder,postStart,postStart+len-1);
    		root->right= buildBinTree(inorder,rootIndex+1,inEnd,postorder,postStart+len,postEnd-1);
    		return root;
    	}
    };


  • 相关阅读:
    Sky中国War3的旗帜
    2008流行趋势发布暨07届学生毕业秀(上海大学主办)
    随便写一下
    六一节——小朋友们快乐
    HEI
    Update my blog to improve my idea.
    由ipod引起的奇遇记
    加勒比海盗
    “老板娘”请客吃饭
    蚂蚁工坊
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7274664.html
Copyright © 2011-2022 走看看