一、使用链表前序遍历创建二叉树(递归)
步骤
- 创建二叉树函数,以根节点作为返回值;
- 创建一棵二叉树结点,并初始化;
- 为此二叉树结点申请存储空间;
- 向数据域输入元素数据;
- 考虑终止条件:当输入特殊字符’0’时,停止创建,即二叉树元素输入完毕;
- 循环体中:访问左子树(调用函数自身);访问右子树(调用函数自身);
- 循环体外,返回根节点。
二、二叉树的遍历
递归:前序、中序、后续
前序递归遍历:
若被遍历的二叉树非空,则:
- 访问根结点;
- 以前序遍历原则遍历根结点的左子树;
- 以前序遍历原则遍历根结点的右子树。
非递归:前序、层次
前序非递归遍历:
- 声明一个结点,作为当前结点;
- 声明一个栈,用来存储返回的结点位置;
- 若树不为空,则首先访问树的根结点并输出打印;
- 判断当前结点是否有左右孩子(开始循环);
- 如果有右孩子,则将有孩子的地址压入栈中记忆;
- 如果有左孩子,则向左移动,并输出打印;
- 如果没有左