哈尔滨市住房和城乡建设局局网站免费 网站管理系统
哈尔滨市住房和城乡建设局局网站,免费 网站管理系统,wordpress异步加载,网站注册界面代码栈
思路#xff1a; 思路与 力扣105. 从前序与中序遍历序列构造二叉树 相同#xff1b;差异的地方#xff1a; 从后序遍历数组尾部向前遍历#xff1b;#xff08;根节点在尾部#xff09;一直迭代“最右”节点#xff0c;将其挂载到栈顶#xff08;“根”节点#x…栈
思路 思路与 力扣105. 从前序与中序遍历序列构造二叉树 相同差异的地方 从后序遍历数组尾部向前遍历根节点在尾部一直迭代“最右”节点将其挂载到栈顶“根”节点的右子树节点后序遍历从尾部迭代顺序变成了根-右子树-左子树出栈后挂载左子树
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* buildTree(vectorint inorder, vectorint postorder) {if (!postorder.size()) {return nullptr;}int post_size postorder.size();std::stackTreeNode* stk;TreeNode* root new TreeNode(postorder[post_size - 1]);stk.push(root);int in_idx post_size - 1;for (int idx post_size - 2; idx 0; --idx) {TreeNode *node stk.top();int post_val postorder[idx];if (node-val ! inorder[in_idx]) {node-right new TreeNode(post_val);stk.push(node-right);} else {while (!stk.empty() (stk.top()-val inorder[in_idx])) {node stk.top();stk.pop();--in_idx;}node-left new TreeNode(post_val);stk.push(node-left);}}return root;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88005.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!