编写函数,建立二叉树的二叉链表;实现二叉树的前中后序的递归和非递归遍历算法。
时间: 2023-04-27 13:00:41 浏览: 155
编写函数,可以建立二叉树的二叉链表。二叉链表是一种常见的二叉树存储结构,它由一个根节点和两个指向左右子树的指针组成。建立二叉树的过程可以通过递归实现,具体步骤如下:
1. 如果当前节点为空,则返回空指针。
2. 读入当前节点的值,并创建一个新节点。
3. 递归调用函数,建立左子树。
4. 递归调用函数,建立右子树。
5. 将新节点的左右指针指向左右子树的根节点。
6. 返回新节点的指针。
实现二叉树的前中后序的递归和非递归遍历算法。二叉树的遍历是指按照一定的顺序访问二叉树中的所有节点。常见的遍历方式有前序遍历、中序遍历和后序遍历。递归遍历算法是指通过递归函数实现遍历,而非递归遍历算法是指通过栈等数据结构实现遍历。
前序遍历的递归算法:
1. 如果当前节点为空,则返回。
2. 访问当前节点。
3. 递归遍历左子树。
4. 递归遍历右子树。
中序遍历的递归算法:
1. 如果当前节点为空,则返回。
2. 递归遍历左子树。
3. 访问当前节点。
4. 递归遍历右子树。
后序遍历的递归算法:
1. 如果当前节点为空,则返回。
2. 递归遍历左子树。
3. 递归遍历右子树。
4. 访问当前节点。
前序遍历的非递归算法:
1. 创建一个栈,并将根节点入栈。
2. 循环执行以下步骤,直到栈为空:
1. 弹出栈顶节点,并访问该节点。
2. 如果该节点有右子树,则将右子树入栈。
3. 如果该节点有左子树,则将左子树入栈。
中序遍历的非递归算法:
1. 创建一个栈,并将根节点入栈。
2. 循环执行以下步骤,直到栈为空:
1. 如果当前节点不为空,则将当前节点入栈,并将当前节点指向左子树。
2. 如果当前节点为空,则弹出栈顶节点,并访问该节点,然后将当前节点指向右子树。
后序遍历的非递归算法:
1. 创建两个栈,分别为s1和s2,并将根节点入s1。
2. 循环执行以下步骤,直到s1为空:
1. 弹出s1的栈顶节点,并将该节点入s2。
2. 如果该节点有左子树,则将左子树入s1。
3. 如果该节点有右子树,则将右子树入s1。
3. 循环遍历s2中的节点,并访问每个节点。
阅读全文