zoukankan      html  css  js  c++  java
  • [LeetCode]Construct Binary Tree from Inorder and Postorder Traversal

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

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

    Have you been asked this question in an interview? 
    /**
     * 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 *DFS(vector<int> &inorder, vector<int> &postorder,int leftstart,int leftend,int rightstart,int rightend)
        {
            if(leftend<leftstart||rightend<rightend) return NULL;
            TreeNode *root=new TreeNode(postorder[rightend]); //
            int pos;
            for(int i=leftstart;i<=leftend;i++)
            {
                if(inorder[i]==postorder[rightend])
                {
                    pos=i;
                    break;
                }
            }
            int len=pos-leftstart;
            root->left=DFS(inorder,postorder,leftstart,pos-1,rightstart,rightstart+len-1);
            root->right=DFS(inorder,postorder,pos+1,leftend,rightstart+len,rightend-1);
            return root;
        }
        TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
            return DFS(inorder,postorder,0,inorder.size()-1,0,postorder.size()-1);
        }
    };
    

      

  • 相关阅读:
    Linux dnsmasq.conf
    Linux 关闭网络管理服务
    Python Mysql_db对数据查询进行处理
    Python windows安装MYSQL_db
    Python 递归
    Nginx 系统维护配置
    ls 查看时间排序
    Nginx Linux yum安装
    Nginx 前后端分离配置 分发
    Spring boot 执行jar文件 方式
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3594878.html
Copyright © 2011-2022 走看看