Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,2,3]
.
Note: Recursive solution is trivial, could you do it iteratively?
We can use a stack to simulate the recursive call.
C++ Code:
/* * func: preorder_traversal * goal: give the preorder traversal of the tree * @param root: root node * return: preorder traversal list */ vector<int> preorder_traversal(TreeNode *root){ vector<int> result; if(root == nullptr){ return result; } stack<TreeNode *> preorder_helper; preorder_helper.emplace(root); while(!preorder_helper.empty()){ TreeNode *curr = preorder_helper.top(); result.emplace_back(curr->val); preorder_helper.pop(); if(curr->right) preorder_helper.emplace(curr->right); if(curr->left) preorder_helper.emplace(curr->left); } return result; }
Python Code:
# func: preorder traversal of the tree # @param root: root node # @return: traversal list def preorder_traversal(root): if not root: return [] result = [] stack = [root] while stack: curr = stack[-1] stack = stack[:-1] result.append(curr.val) if curr.right: stack.append(curr.right) if curr.left: stack.append(curr.left) return result
No comments:
Post a Comment