问题描述
给定一个二叉树的根,返回其节点的先序排列值。
示例
- 示例1

Input: root = [1,null,2,3]
Output: [1,3,2]
Input: root = []
Output: []
Input: root = [1]
Output: [1]
解决方案描述
2叉树的先序排列是左中右的顺序排列, 到该2叉树的最左边节点,
然后输出中间节点,然后输出右边节点。每个节点都按照这个顺序输出。由于需要保存访问过的节点,所以使用栈来保存。
- 判断根节点是否为空,为空,则返回空的列表。
- 将根节点存入栈中,且将根节点赋值给当前节点。右子节点存在flg设为真。结果列表初始化为空。
- 循环遍历栈中节点,执行下面操作:
- 当前节点的左节点不为空,且右子节点存在flg为真是,循环执行下面的操作:
将当前节点的左节点压入栈中,并将当前节点的左节点赋值给当前节点。 - 当栈非空时,弹出栈顶节点,赋值给当前节点。
- 将当前节点的值加入到结果列表中。
- 如果当前节点的右子节点非空,则将该右子节点压入栈中,并将该右子节点赋值给当前节点,右子节点flg设为真,
否则右子节点flg设为假。
- 当前节点的左节点不为空,且右子节点存在flg为真是,循环执行下面的操作:

370

被折叠的 条评论
为什么被折叠?



