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

    /**
     * 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* build(vector<int>& preorder, vector<int>& inorder,int l1,int r1,int l2,int r2){
            if(l1>r1) return NULL;
           // if(l2>r2) return NULL;  可以注释掉的
            TreeNode* root;
            root = new TreeNode(preorder[l1]);
    
            int l=l2;
            while(inorder[l]!=preorder[l1]){
                l++;
            }
            l=l-l2;
            //int l=in_map[preorder[l1]]-l2;   可以使用map,提高查找速度
            root->left = build(preorder,inorder,l1+1,l1+l,l2,l2+l-1);        
            root->right =  build(preorder,inorder,l1+l+1,r1,l2+l+1,r2);  
            return root;
        }
        
        TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { 
         TreeNode* root; 
         int s=preorder.size();
         if(s==0) return  root;
         root = build(preorder,inorder,0,s-1,0,s-1);
          return root;
        }
       
    };

    Construct Binary Tree from Preorder and Inorder Traversal

  • 相关阅读:
    内联汇编的使用
    metamask注记词
    一个简单的增删改查合约
    企业邮箱账号
    压缩包管理
    设计模式
    软硬链接ln
    文件IO-Linux
    静态库和动态库
    gdb调试
  • 原文地址:https://www.cnblogs.com/julie-yang/p/4683605.html
Copyright © 2011-2022 走看看