144.二叉树的前序遍历

144.二叉树的前序遍历

10min

二叉树的前序遍历的顺序是中 - 左 - 右

先遍历完所有的根节点与左节点,然后处理右节点

可以看出来这是一个递归的行为,递归问题可以用栈来进行简化

迭代解法
1
2
3
4
5
6
7
8
9
10
11
12
var preorderTraversal = function(root) {
if (!root) return null
var stack = [root]
var res = []
while(stack.length) {
var node = stack.pop()
res.push(node.val)
node.right && stack.push(node.right)
node.left && stack.push(node.left)
}
return res
};
递归解法

递归问题当然可以递归解决

1
2
3
4
5
6
7
8
9
10
11
var preorderTraversal = function(root) {
var res = []
if (!root) return res
var travel = function (node) {
res.push(node.val)
node.left && travel(node.left)
node.right && travel(node.right)
}
travel(root)
return res
};