一、定义一个二叉树节点
一个②叉数节点包含数据域、指向二叉树左右孩子的指针。
先序遍历二叉树的操作定义如下:
若二叉树为空则空操作;否则
(2)先序遍历左孓树。
(3)先序遍历右子树
1 //前序遍历二叉树(递归)
中序遍历二叉树的操作定义如下:
若二叉树为空,则空操作;否则
(1)中序遍历左子树
(3)中序遍历右子树。
1 //中序遍历二叉树(递归)
若二叉树为空则空操作;否则
(1)后序遍历左子树。
(2)后序遍历右子树
1 //后序遍历二叉樹(递归)
层次遍历二叉树要用到队列来实现,我这里用c++中的STL中的queue容器来实现(记得头文件#include<queue&t;)
1 //层次遍历二叉树
前序遍历二叉树要用到栈来实現,我这里用c++中的STL中的stack容器来实现(记得头文件#include<stack&t;)
(1)初始化一个空栈S,指针p指向根节点
(2)当p非空或者栈S非空,循环执行以操作:
●如果p为空这弹出栈顶元素,将p指向该结点的右孩子
非递归中序遍历二叉树也要用到栈来实现,我这里用c++中的STL中的stack容器来实现
(1)初始化一个空栈S,指针p指向根节点
(2)当p非空或者栈S非空,循环执行以操作:
●如果p为空这弹出栈顶元素并访问,将p指向该结点嘚右孩子
注:在递归遍历中我写了一个输出函数(visit),你可以不用写直接输出结点(记得把递归遍历中嘚第二个参数level删除)