• 二叉树重建leetcode


    1.前序中序确定

    class Solution {
    public:
        TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder)
        {
            if(preorder.size()==0||inorder.size()==0||preorder.size()!=inorder.size())return NULL;
            TreeNode *root=NULL;
            build(root,preorder,inorder,0,preorder.size()-1,0,inorder.size()-1); 
            return root;
        }
        void build(TreeNode *&root,vector<int> &preorder, vector<int> &inorder,int p1,int p2,int i1,int i2)
        {
            root=new TreeNode(preorder[p1]);
            int j;
            for(j=i1;j<=i2;j++)
            {
                if(inorder[j]==preorder[p1])break;
            }
            if(j!=i1)
            build(root->left,preorder,inorder,p1+1,p1+j-i1,i1,j-1);
            if(j!=i2)
            build(root->right,preorder,inorder,p1+(j-i1)+1,p2,j+1,i2);
        }
    };
    

    2.中序和后序确定

    class Solution {
    public:
        TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) 
        {
            if(postorder.size()==0||inorder.size()==0||inorder.size()!=postorder.size())return NULL; 
            TreeNode *root=NULL; 
            build(root,inorder,postorder,0,inorder.size()-1,0,postorder.size()-1);  
            return root;
        }
        void build(TreeNode *&root,vector<int> &inorder, vector<int> &postorder,int i1,int i2,int p1,int p2) 
        { 
            root=new TreeNode(postorder[p2]); 
            int j; 
            for(j=i1;j<=i2;j++) 
            { 
                if(inorder[j]==postorder[p2])break; 
            } 
            if(j!=i1) 
            build(root->left,inorder,postorder,i1,j-1,p1,p1+j-1-i1); 
            if(j!=i2) 
            build(root->right,inorder,postorder,j+1,i2,p1+j-i1,p2-1); 
        } 
    }; 
    
  • 相关阅读:
    5.Spring常用注解
    4.@Autowired注解与@Resource注解的区别
    3.只读事务@Transactional(readOnly = true)
    2.Object...param参数
    1.private static final long serialVersionUID = 1L
    SOCKET是调用操作系统通信服务的一种机制
    HTTP头和网页分离方法

    Python split()方法
    socket (计算机专业术语)
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/3080963.html
Copyright © 2020-2023  润新知