题目描述
打印二叉树所有路径(从根节点到叶子结点)
// Input:
// 1
// / \
//2 3
// / \
// 5 6
// OutPut:
// 1->2
// 1->3->5
// 1->3->6
实现
使用递归方法来解决此问题。
- 用一个栈stack 来存储路径,
- 当遍历到叶子结点时,将stack中的路径放入result结果数组里面
- 若不是叶子节点,则对左右子树递归调用
- 最后返回结果数组
function printAllLoad(treeNode, stack = [], result = []) {
const currentNode = treeNode;
stack.push(treeNode.val);
if (!treeNode.left && !treeNode.right) {
result.push(stack.slice(0));
}
if (treeNode.left) {
printAllLoad(treeNode.left, stack, result);
}
if (treeNode.right) {
printAllLoad(treeNode.right, stack, result);
}
stack.pop();
return result;
}