详细分析可参考LeetCode上的一篇博文。具体程序如下: 1vector<int> inorderTraversal(TreeNode*root) {2vector<int>rVec;3stack<TreeNode *>st;4TreeNode *tree =root;5while(tree || !st.empty())6{7if(tree)8{9st.push(tree);10tree = tree->left;11}12else13{14tree =st.top();15rVec.push...
confused what"{1,#,2,3}"means?> read more on how binary tree is serialized on OJ. 思路: preorder用栈两三下就写完了 1vector<int> preorderTraversal(TreeNode *root) {2vector<int>nodes;3if(root == NULL)returnnodes;4stack<TreeNode *>tStack;5tStack.push(root);6while(!tStack.empty()...
TreeNode* buildTree(vector<int>& preorder, int preBeg, vector<int>& inorder, int inBeg, int size) { if(size <= 0) return nullptr; TreeNode* curNode = new TreeNode(preorder[preBeg]); int inorderLeftTreeEnd = inBeg; while(inorder[inorderLeftTreeEnd] != preorder[preBeg]) ++in...
voidpreorder(TreeNode*root){ if(!root) return; path.push_back(root->val); //if(root->left) preorder(root->left); //if(root->right) preorder(root->right); } vector<int>preorderTraversal(TreeNode*root) { preorder(root); returnpath; } }; 1. 2. 3. 4. 5. 6. 7. 8. 9. ...
事实上,我们不需要真的把preorder和inorder切分了,只需要用分别用两个指针指向开头和结束位置即可。注意下边的两个指针指向的数组范围是包括左边界,不包括右边界。 对于下边的树的合成。 左子树 右子树 publicTreeNodebuildTree(int[]preorder,int[]inorder){returnbuildTreeHelper(preorder,0,preorder.length,inor...
public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); preorderTraversalHelper(root, list); return list; } private void preorderTraversalHelper(TreeNode root, List<Integer> list) { if (root == null) { return; } list.add(root.val); preorderTrav...
给定两个整数数组,preorder和postorder,其中preorder是一个具有无重复值的二叉树的前序遍历,postorder是同一棵树的后序遍历,重构并返回二叉树。 如果存在多个答案,您可以返回其中任何一个。 示例1: 输入:preorder = [1,2,4,5,3,6,7], postorder = [4,5,2,6,7,3,1]输出:[1,2,3,4,5,6,7] ...
总结: pre order tree ** Anyway, Good luck, Richardo! My code: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * }
Post-Order: 先访问其左右子树,再中间。对每一个subtree,同样适用。 image.png Pre-Order Traversal 三种解法: Recursive Iterate 用Stack Morris Traversal (好处是,Pre-Order和In-Order代码只有很小的改动) Morris Pre-Order Traversal (LeetCode 144) (Medium) ...
. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。