写出下图所示二叉树的先序遍历、中序遍历、后序遍历的结点序列。

2024-11-15 13:17:54
推荐回答(3个)
回答1:

前序遍历的结点序列是:BEFCGDH;中序遍历的结点序列是:FEBGCHD;后序遍历的结点序列是:FEGHDCB。

前序遍历首先访问根结点然后遍历左子树,最后遍历右子树;序遍历首先遍历左子树,然后访问根结点,最后遍历右子树;后序遍历先左后右再根,即首先遍历左子树,然后遍历右子树,最后访问根结点。

扩展资料:

结点是包括一个数据元素及若干个指向其它子树的分支;例如,A,B,C,D等。

在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结点。

在C语言中,链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据;二为下一个结点的地址,即指针域和数据域。

数据结构中的每一个数据结点对应于一个储存单元,这种储存单元称为储存结点,也可简称结点。

回答2:

#include
#include /* for atof() */

#define MAXOP 100 /* max size of operand or operator */
#define NUMBER '0' /* signal that a number was found */

int getop(char []);
void push(double);
double pop(void);

/* reverse Polish calculator */
main()
{
int type;
double op2;
char s[MAXOP];

while ((type = getop(s)) != EOF) {
switch (type) {
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() + pop());
break;
case '*':
push(pop() * pop());
break;
case '-':
op2 = pop();
push(pop() - op2);
break;
case '/':
op2 = pop();
if (op2 != 0.0)
push(pop() / op2);
else
printf("error: zero divisor\n");
break;
case '\n':
printf("\t%.8g\n", pop());
break;
default:
printf("error: unknown command %s\n", s);
break;
}
}
return 0;
}

回答3:

先序:
FDBACEGIHJ
中序:
ABCDEFGHIJ
后序:
ACBEDHJIGF