* Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };*/classSolution {public: vector<int> preorderTraversal(TreeNode*root) { vector<int>result; preorder(root, r...
classSolution {public: vector<int> preorderTraversal(TreeNode *root) { vector<int>res; stack<TreeNode *>s;if(root == NULL){//空树returnres; } s.push(root);//放树根while(!s.empty()){ TreeNode*cc =s.top(); s.pop(); res.push_back(cc->val);//访问根if(cc->right !=NULL){...
上边的两种解法,空间复杂度都是O(n),利用 Morris Traversal 可以使得空间复杂度变为 O(1)。 它的主要思想就是利用叶子节点的左右子树是 null ,所以我们可以利用这个空间去存我们需要的节点,详细的可以参考 94 题 中序遍历。 public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new...
12 vector<int> preorderTraversal(TreeNode *root) { 13 vector<int> v; 14 if(root==NULL) 15 return v; 16 stack<TreeNode *> tree; 17 tree.push(root); 18 while(!tree.empty()){ 19 TreeNode *p=tree.top(); 20 v.push_back(p->val); 21 tree.pop(); 22 if(p->right!=NULL) 2...
void preorderTraversalRecursive(TreeNode* root, vector<int>& preSeq) { if(root == nullptr) return; preSeq.push_back(root->val); // 遍历左右孩子 preorderTraversalRecursive(root->left, preSeq); preorderTraversalRecursive(root->right, preSeq); ...
5. Construct Binary Tree from Preorder and Inorder Traversal 与上题类似,我们知道preorder第一个元素一定是根节点,按照这个特性可以找出根节点在inorder中的位置,从该位置分开,左右两边分别就是左右子树。 class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode: if...
Preorder traversal Inorder traversal Postorder traversal Essentially, all three traversals work in roughly the same manner. They start at the root and visit that node and its children. The difference among these three traversal methods is the order with which they visit the node itself versus visi...
Preorder traversal Inorder traversal Postorder traversal Essentially, all three traversals work in roughly the same manner. They start at the root and visit that node and its children. The difference among these three traversal methods is the order with which they visit the node itself versus visi...
:type root: TreeNode :rtype: List[int] """rs=[]defdfs(node):ifnotnode:returnrs.append(node.val)dfs(node.left)dfs(node.right)dfs(root)returnrsdefpreorderTraversalV2(root):defdfs(node):ifnotnode:return[]return[node.val]+dfs(node.left)+dfs(node.right)returndfs(root)defpreorderTraversa...
*/classSolution{public List<Integer>preorderTraversal(TreeNode root){List<Integer>result=newLinkedList<>();TreeNode current=root;TreeNode prev=null;while(current!=null){if(current.left==null){result.add(current.val);current=current.right;}else{// has left, then find the rightmost of left su...