LeetCode--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.

思路:這道題的思路基本和上一題一樣,不同之處在於後序遍歷根節點在最後面。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
        return buildTree(inorder,0,inorder.size()-1,postorder,0,postorder.size()-1);
    }
    TreeNode* buildTree(vector<int>&inorder,int ileft,int iright,vector<int>&postorder,int pleft,int pright){
        if(ileft>iright||pleft>pright) return NULL;
        TreeNode *cur=new TreeNode (postorder[pright]);
        int i=0;
        for(i=ileft;i<=iright;i++){
            if(inorder[i]==postorder[pright]) break;
        }
        cur->left=buildTree(inorder,ileft,i-1,postorder,pleft,pleft+i-ileft-1);
        cur->right=buildTree(inorder,i+1,iright,postorder,pleft+i-ileft,pright-1);
        return cur;
    }
};
發佈了121 篇原創文章 · 獲贊 42 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章