#include <iostream>
#include <string>
using namespace std;
// 定义二叉树;
struct Tree {
string data;
Tree *lchild, *rchild;
};
//创建二叉树输出数据;
Tree *Create() {
int i, j;
Tree *p, *t, *s[50];
while (1) {
cin >> i;
if (i == 0)
break;
else {
p = new Tree();
p->lchild = p->rchild = NULL;
cin >> p->data;
s[i] = p;
if (i == 1)
t = p;
else {
j = i/2;
if (i%2 == 0)
s[j]->lchild = p;
else
s[j]->rchild = p;
}
}
}
return t;
}
// 后根算法输出数据;
void Porder(Tree *t) {
Tree *p = t, *s1[50];
int top = 0, s2[50];
do {
// 循环访问左结点直到为空;
while (p != NULL) {
s1[++top] = p;
s2[top] = 0;
p = p->lchild;
}
// 若为空取栈顶元素;指向其右结点;把其s2[top] = 1 标记为1;若右结点为空,在访问左结点;
i
[二叉树] 后根遍历算法
最新推荐文章于 2023-10-28 15:46:52 发布
本文深入探讨了二叉树的后根遍历算法,详细解释了其过程和实现方式。后根遍历的特点是先遍历左子树,接着遍历右子树,最后访问根节点。这种遍历方式在某些问题中非常有用,如表达式树的求值。通过递归和迭代两种方法,我们可以有效地实现后根遍历。
摘要由CSDN通过智能技术生成