zoukankan      html  css  js  c++  java
  • Construct Binary Tree from Preorder and Inorder Traversal

    已知前序遍历和中序遍历可以得到原二叉树。

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(preorder.size()==0)
            return NULL;
            return build(preorder,inorder,0,preorder.size(),0);
        }
        
        TreeNode *build(vector<int> &preorder, vector<int> &inorder,int p,int t,int i)
        {
            if(t==0)
            return NULL;
            TreeNode* head = (TreeNode *)malloc(sizeof(TreeNode));
            head->val = preorder[p];
            int j = -1;
            for( j = i;j<t+i;j++)
            {
                if(inorder[j] == preorder[p])
                break;
            }
            head->left = build(preorder,inorder,p+1,j-i,i);
            head->right = build(preorder,inorder,p+j-i,t-j-i,j+1);
            return head;
        }
    };
  • 相关阅读:
    js简单排序
    js希尔排序
    js直接插入排序
    大数运算
    IOC和AOP的理解 (持续更新)
    频发事件的缓存技巧
    执行上下文深入解析(Execution Context)
    二分
    HDU 3790 最短路径问题 (双重权值)
    浅谈Targan算法
  • 原文地址:https://www.cnblogs.com/727713-chuan/p/3318266.html
Copyright © 2011-2022 走看看