1) PreOrder traversal ans =[]defpreOrder(self, root):ifnotroot:returnans.append(root.val)preOrder(root.left) preOrder(root.right) preOrder(root)returnans 2) Inorder traversal Worst S: O(n), average is O(lgn) ans =[]definOrder(self, root):ifnotroot:returninOrder(root.left)ans.ap...
inorder 和postorder共同点就是他们从右往左能够找到最右边的treenode,而preorder 和inorder共同点就是他们能够找到最左边的treenode,所以从左往右开始递归。 最后一个相似的题就是给你preorder, postorder, 让你重建tree,preorder: root, left, right. postorder: left, right, root. 这时候你依然发现可以从左...
而pre的意思就是说把中心放到了最前面,所以是ROOT, LEFT, RIGHT 而post就是说把中心放到了最后面,所以是LEFT,RIGHT,ROOT Construct Binary Tree from Inorder and Postorder Traversal 这道题就是给你两个数组,一个是Inorder traversal,一个是postorder,我之前做过类似的题目,但是还是想不出来,所以参考了自己以前...
Preorder, Inorder, and Postorder Iteratively Summarization[1] 1.Pre Order Traverse 1publicList<Integer>preorderTraversal(TreeNode root) {2List<Integer> result =newArrayList<>();3Deque<TreeNode> stack =newArrayDeque<>();4TreeNode p =root;5while(!stack.isEmpty() || p !=null) {6if(p !
1、preorder + inorder 第一个版本,使用坐标范围: 1/**2* Definition for binary tree3* struct TreeNode {4* int val;5* TreeNode *left;6* TreeNode *right;7* TreeNode(int x) : val(x), left(NULL), right(NULL) {}8* };9*/10classSolution {11public:12TreeNode *build(vector<int> ...
1 preorder: 节点入栈一次, 入栈之前访问。 2 inorder:节点入栈一次,出栈之后访问。 3 postorder:节点入栈2次,第二次出战后访问。 1classSolution {2public:3vector<int> preorderTraversal(TreeNode *root) {45vector<int>result;6stack<TreeNode*>stack;78TreeNode *p =root;910while( NULL != p ||...
Inorder 方法一:和Preorder方法一类似,直接做,但是需要一个计数器,第二次出栈的时候才可以输出。 classSolution {public: vector<int> inorderTraversal(TreeNode*root) { vector<int>res;if(root==NULL)returnres; unordered_map<TreeNode *,int> hash;//default value is 0;stack<TreeNode *>s({root})...
1 class TreeNode{ 2 char data; 3 TreeNode left; 4 TreeNode right; 5 static int leaf; 6 static boolean flag=true; 7 TreeNode (char c){ 8 data = c; 9 }
1vector<int> preorderTraversal(TreeNode*root) {2vector<int>rVec;3if(!root)4returnrVec;56stack<TreeNode *>st;7st.push(root);8while(!st.empty())9{10TreeNode *tree =st.top();11rVec.push_back(tree->val);12st.pop();13if(tree->right)14st.push(tree->right);15if(tree->left)...
preorder用栈两三下就写完了 1vector<int> preorderTraversal(TreeNode *root) {2vector<int>nodes;3if(root == NULL)returnnodes;4stack<TreeNode *>tStack;5tStack.push(root);6while(!tStack.empty()){7TreeNode *top =tStack.top();8nodes.push_back(top->val);9tStack.pop();10if(top->right...