zoukankan      html  css  js  c++  java
  • Leetcode106. Construct Binary Tree from Inorder and Postorder Traversal中序后续构造二叉树

    根据一棵树的中序遍历与后序遍历构造二叉树。

    注意:

    你可以假设树中没有重复的元素。

    例如,给出

    中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3]

    返回如下的二叉树:

    3 / 9 20 / 15 7

    class Solution {
    public:
        TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) 
        {
            if(postorder.size() == 0)
                return NULL;
            if(postorder.size() == 1)
                return new TreeNode(postorder[0]);
            int iroot = postorder[postorder.size() - 1];
            int ipos = 0;
            for(int i = 0; i < inorder.size(); i++)
            {
                if(inorder[i] == iroot)
                {
                    ipos = i;
                    break;
                }
            }
            TreeNode *root = new TreeNode(iroot);
            vector<int> v1(postorder.begin(), postorder.begin() + ipos);
            vector<int> v2(inorder.begin(), inorder.begin() + ipos);
            vector<int> v3(postorder.begin() + ipos, postorder.end() - 1);
            vector<int> v4(inorder.begin() + ipos + 1, inorder.end());
            root ->left = buildTree(v2, v1);
            root ->right = buildTree(v4, v3);
            return root;
        }
    };
  • 相关阅读:
    hph 缓存机制
    递归调用 和 迭代
    多维数组排序
    php curl操作
    JavaScript基本数据类型
    JavaScript基础
    CSS基础布局
    CSS基础样式
    CSS选择器
    CSS3基础
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433845.html
Copyright © 2011-2022 走看看