更多"实现任意二叉树的后序遍历的非递归算法用栈结构,最佳方案是二叉树采用()"的相关试题:
[单项选择]实现任意二叉树的后序遍历的非递归算法用栈结构,最佳方案是二叉树采用______存储结构。
A. 二叉链表
B. 顺序存储结构
C. 三叉链表
D. 广义表存储结构
[简答题]【说明】
本程序利用非递归算法实现二叉树后序遍历。
【函数】
#include<stdio.h>
#include<stdlib.h>
typedef struct node{/*二叉树的结点数据结构类型*/
char data;
struct node *left;
struct node *right;
}BTREE;
void SortTreelnsert(BTREE **tree, BTREE *s)
{
if(*tree==NULL)*tree=s;
else
if(s->data<(*tree)->data)
SortTreelnsert( (1) ,s);
else if(s->data>=(*tree)->data)
SortTreelnsert( (2) ,s);
}
void TraversalTree(BTREE *tree)
{
BTREE *stack[1 000],*p;
int tag[1000],top=0;
p=tree;
do{
while(p !=NULL)
{
stack[++top]=p;
(3) ;
tag[top]=0; /*标记栈顶结点的左子树已进行过后序遍历*/
}
while(top>0&& (4) )/*栈顶结点的右子树是否被后序遍历过*/
{
p=stack[top--];
putchar(p->data);
}
if(top>0)/*对栈顶结点的右子树进行后序遍历*/
{
(5) ;
tag[top]=1;
}
}while(top>0);
}
void PrintSortTree(BTREE *tree)
{
if(tree !=NULL)
{
printSortTree(tree->left);
[简答题]【说明】
本程序利用非递归算法实现二叉树后序遍历。
【函数】
#include<stdio.h>
#include<stdlib.h>
typedef struct node/*二叉树的结点数据结构类型*/
char data;
struct node *left;
struct node *right;
BTREE;
void SortTreelnsert(BTREE **tree, BTREE *s)
if(*tree==NULL)*tree=s;
else
if(s->data<(*tree)->data)
SortTreelnsert( (1) ,s);
else if(s->data>=(*tree)->data)
SortTreelnsert( (2) ,s);
void TraversalTree(BTREE *tree)
BTREE *stack[1 000],*p;
int tag[1000],top=0;
p=tree;
do
while(p !=NULL)
stack[++top]=p;
(3) ;
tag[top]=0; /*标记栈顶结点的左子树已进行过后序遍历*/
while(top>0&& (4) )/*栈顶结点的右子树是否被后序遍历过*/
p=stack[top--];
putchar(p->data);
if(top>0)/*对栈顶结点的右子树进行后序遍历*/
(5) ;
tag[top]=1;
while(
[填空题][说明] 假设二叉树采用链式存储方式存储,编写一个后序遍历二叉树的非递归方式。
Void postorder (btree * B)
btree * stack [m0] , *p;
int tag [m0], top =0;
p=b;
do
while (p! =NULL)
top+ +;
(1)
tag [top] =0;
p =p- >left;
if (top >0)
(2)
if (tag[top3 = =1)
(3)
print ("%d", p- >data);
if(top>0)
(4)
tag [top] = 1;
while (p! = NULL && top ! =0)
[填空题][说明] 假设二叉树采用链式存储方式存储,编写一个后序遍历二叉树的非递归方式。
Void postorder (btree * B)
{
btree * stack [m0] , *p;
int tag [m0], top =0;
p=b;
do
{
while (p! =NULL)
{
top+ +;
(1)
tag [top] =0;
p =p- >left;
}
if (top >0)
{
(2)
if (tag[top3 = =1)
{
(3)
print ("%d", p- >data);
}
if(top>0)
{
(4)
tag [top] = 1;
}
}
} while (p! = NULL && top ! =0)
}
[单项选择]后序遍历序列与中序遍历序列相同的二叉树为 (85) ,前序遍历序列与后序遍历序列相同的二叉树为 (86) 。
A. 根结点无左子树的二叉树
B. 根结点无右子树的二叉树
C. 只有根结点的二叉树或非叶子结点只有左子树的二叉树
D. 只有根结点的二叉树或非叶子结点只有右子树的二叉树
[单项选择]若一棵二叉树的后序遍历序列为DGJHEBIFCA,中序遍历序列为DBGEHJACIF,则其前序遍历序列为()。
A. ABDEGHJFIC
B. ABDEGHJCFI
C. ABCDEFGHIJ
D. ABDEGJHCFI
[填空题]前序遍历、中序遍历和后序遍历均采用“ 【6】 ”的访问顺序。
[填空题]前序遍历、中序遍历和后序遍历均采用“ 【4】 ”的访问顺序。
[单项选择]已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是
A. ABCDE
B. ECABD
C. EACDB
D. CDEAB
[单项选择]假设一棵二叉树的后序遍历序列为DGJHEBIFCA,中序遍历序列为DBGEHJACIF,则其前序遍历序列为()。
A. ABCDEFGHIJ
B. ABDEGHJCFI
C. ABDEGHJFIC
D. ABDEGJHCFI
[单项选择]一棵二叉树的中序遍历序列为DBGEUJOCIF,后序遍历序列为DCJHEBIPCO,则其前序遍历序列为 (87) 。
A. OBCDEFGHIJ
B. OBDEGHJCFI
C. OBDEGHJPIC
D. OBDECJHCFI