[leetcode]106. Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:配音阁软件 编辑:程序博客网 时间:2024/06/10 23:43

题目链接:https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/#/description

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

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

根据中序遍历序列和后序序遍历序列构建二叉树

    原理和上述原理基本一致,任然沿用上述例子

        ___7___       /     \    10        2   /   \      /  4    3      8        \    /         1  11

那么它的中序遍历和后序序遍历的结果如下:

inorder = {4,10,3,1,7,11,8,2}

postorder = {7,10,4,3,1,2,8,11}


class Solution {public:    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {        return create(inorder,postorder,0,inorder.size()-1,0,postorder.size()-1);    }    TreeNode* create(vector<int>& inorder,vector<int>& postorder,int is,int ie,int ps,int pe)    {        if(ps>pe)            return nullptr;        TreeNode* node=new TreeNode(postorder[pe]);        int pos;        for(int i=is;i<=ie;i++)        {            if(inorder[i]==node->val)            {                pos=i;                break;            }        }        node->left=create(inorder,postorder,is,pos-1,ps,ps+pos-is-1);        node->right=create(inorder,postorder,pos+1,ie,pe+pos-ie,pe-1);        return node;    }};



阅读全文
0 0
原创粉丝点击