一、设计思想
我创建二叉树是用的先序创建,其中用‘#’代表空节点。
1、递归先序遍历
(1)如果当前节点为空节点(用‘#’代表空节点),结束当前函数
(2)打印当前节点
(2)递归当前节点的左子树
(3)递归当前节点的右子树
2、递归中序遍历
(1)如果当前节点为空节点(用‘#’代表空节点),结束当前函数
(2)递归当前节点的左子树
(3)打印当前节点
(4)递归当前节点的右子树
3、递归后序遍历
(1)如果当前节点为空节点(用‘#’代表空节点),结束当前函数
(2)递归当前节点的左子树
(3)递归当前节点的右子树
(4)打印当前节点
4、非递归先序遍历
(1)进入循环,当前节点不为空时:
打印当前节点
当前节点入栈
取当前节点的左子节点为当前节点
(2)弹出栈顶节点,取栈顶节点的右子节点为当前节点
(3)当前节点不为空或节点栈不空时循环执行(1)(2)
5、非递归中序遍历
(1)进入循环,当前节点不为空时:
当前节点入栈
取当前节点的左子节点为当前节点
(2)弹出栈顶节点,打印栈顶节点,取栈顶节点的右子节点为当前节点
(3)当前节点不为空或节点栈不空时循环执行(1)(2)
6、非递归后序遍历
(1)进入循环,当前节点不为空时:
当前节点的访问次数‘visit’赋值0;
当前节点入栈