zoukankan      html  css  js  c++  java
  • Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal前序与中序构造二叉树

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

    注意:

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

    例如,给出

    前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7]

    返回如下的二叉树:

    3 / 9 20 / 15 7

    class Solution {
    public:
        TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) 
        {
            if(preorder.size() == 0)
                return NULL;
            if(preorder.size() == 1)
                return new TreeNode(preorder[0]);
            int iroot = preorder[0];
            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(preorder.begin() + 1, preorder.begin() + ipos + 1);
            vector<int> v2(inorder.begin(), inorder.begin() + ipos);
            vector<int> v3(preorder.begin() + ipos + 1, preorder.end());
            vector<int> v4(inorder.begin() + ipos + 1, inorder.end());
            root ->left = buildTree(v1, v2);
            root ->right = buildTree(v3, v4);
            return root;
        }
    };
  • 相关阅读:
    Python 对象的绑定方法
    Python 类的属性
    Python 对象与类
    Python 面向对象
    Python Subprocess模块
    Python Hashlib模块
    Python Configparser模块
    Python XML模块
    Python Re模块
    Gridview中Datakeys 通过主键取得各列的值。(转)
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433846.html
Copyright © 2011-2022 走看看