小工具知识网

当前位置: 首页 > 行业知识 > LeetCode 106. 从中序与后序遍历序列构造二叉树

行业知识

LeetCode 106. 从中序与后序遍历序列构造二叉树

2026-11-01 08:48:14 来源:互联网转载

���路解析可以看这里

()

主要注意在切割数组时要结合vector构造函数的左闭右开性质,不要混淆。

class Solution {public:    TreeNode* buildTree(vector& inorder, vector& postorder) {        if(postorder.size() == 0)       return NULL;                int rootVal = postorder[postorder.size() - 1];        TreeNode* root = new TreeNode(rootVal);             //自己构建新树        if(postorder.size() == 1)       return root;                auto iter = find(inorder.begin(), inorder.end(), rootVal);         int pivot = iter - inorder.begin();     //找到根结点在中序数组的下标,作为后续分割依据                //切割中序数组,将这层inorder的两个子序列传给下一层        vector leftInOrder(inorder.begin(), inorder.begin() + pivot);     //左边[)        vector rightInOrder(inorder.begin() + pivot + 1, inorder.end());  //右边(]        //切割后序数组,将这层postorder的两个子序列传给下一层        //pivot也反映了左子树的结点数——>有以下的数量关系        vector leftPostOrder(postorder.begin(), postorder.begin() + pivot);        vector rightPostOrder(postorder.begin() + pivot, postorder.end() - 1);        root -> left = buildTree(leftInOrder, leftPostOrder);        root -> right = buildTree(rightInOrder, rightPostOrder);        return root;    }};
()

上一篇:服务器远程链接怎么开机?

下一篇:安卓唯一标识:IMEI,MEID,MAC地址,Android