Leetcode:.. 105 106から二分木構造および配列先行予約前順序およびシーケンス・後順バイナリシーケンス構造

Leetcode:105以前の順序と構成バイナリシーケンス先行予約106シーケンス後順バイナリツリー構造から配列

Leetcode:105以前の順序と構成バイナリシーケンス先行予約106シーケンス後順バイナリツリー構造から配列

この質問は〜クラシックテンプレートトピックの友人であります

:テンプレートください成果のシーケンスでプリオーダートラバーサルシーケンス結果の後にジャンプする前に、ツリーの確立後、または直接カレンダー上の順序

直接ディクテーション!

105前の順序およびバイナリツリー構成シーケンス予約限定!

/**
 * 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:
    vector<int> preOrder,inOrder;
    TreeNode* built(int root,int start,int end,TreeNode* tree){
        if(start>end) return NULL;
        if(tree==NULL) tree=new TreeNode(preOrder[root]);
        int index=start;
        while(inOrder[index]!=preOrder[root]) index++;
        tree->left=built(root+1,start,index-1,tree->left);
        tree->right=built(root+index-start+1,index+1,end,tree->right);
        return tree;
    }
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        preOrder=preorder,inOrder=inorder;
        TreeNode* tree=NULL;
        tree=built(0,0,preOrder.size()-1,tree);
        return tree;
    }
};

106配列の後順二分木構造から配列

/**
 * 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:
    vector<int> inOrder,postOrder;
    TreeNode* build(int root,int start,int end,TreeNode* tree){
        if(start>end) return NULL;
        if(tree==NULL) tree=new TreeNode(postOrder[root]);
        int index=start;
        while(postOrder[root]!=inOrder[index]) index++;
        tree->left=build(root-end+index-1,start,index-1,tree->left);
        tree->right=build(root-1,index+1,end,tree->right);
        return tree;
    }
    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
        inOrder=inorder,postOrder=postorder;
        TreeNode* tree=NULL;
        tree=build(inOrder.size()-1,0,inOrder.size()-1,tree);
        return tree;
    }
};

おすすめ

転載: www.cnblogs.com/cell-coder/p/12354859.html