递归即使利用函数栈来保存信息。
非递归:利用自己申请的数据结构来代替函数栈.
实现:
- 申请一个新栈stack,将头节点head压入stack.。
- 从stack中弹出栈顶节点,记为cur,然后打印cur的值。将cur右孩子(不为空的话)压入stack中,再将cur的左孩子(不为空的话)压入stack。
重复步骤2(压入一次右孩子、左孩子,就弹出栈顶元素),直到stack为空,结束。
1 | public class TreeNode{ |
1 | //利用循环实现二叉树遍历 |
递归即使利用函数栈来保存信息。
非递归:利用自己申请的数据结构来代替函数栈.
实现:
重复步骤2(压入一次右孩子、左孩子,就弹出栈顶元素),直到stack为空,结束。
1 | public class TreeNode{ |
1 | //利用循环实现二叉树遍历 |