-
-
0
-
1
-
3所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。
-
0#include<stdlib.h> #include<stdio.h> #define MAX 50 #define MAS 20 #define CHAR 1 #if CHAR typedef char TElemType; TElemType Nil=' '; #define form "%c" #else typedef int TElemType; TElemType Nil=0; #define form "%d" #endif typedef struct node {TElemType data; struct node *left; struct node *right; struct node *parent; }BiTNode,*BiTree; BiTNode *InitBiTree(BiTNode *bt) { bt=NULL; return bt; } BiTNode *CreateBiTree(BiTNode *bt) {TElemType ch; scanf(form,&ch); if(ch==Nil) bt=NULL; else {bt=(BiTNode *)malloc(sizeof(BiTNode)); if(!bt) exit(0); bt->data=ch; bt->parent=NULL; bt-
-
21.先序遍历非递归算法 #define maxsize 100 typedef struct { Bitree Elem[maxsize]; int top; }SqStack; void PreOrderUnrec(Bitree t) { SqStack s; StackInit(s); p=t; while (p!=null || !StackEmpty(s)) { while (p!=null) //遍历左子树 { visite(p->data); push(s,p); p=p->lchild; }//endwhile if (!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历 { p=pop(s); p=p->rchild; }//endif }//endwhile }//PreOrderUnrec
-
0#include <stdio.h> #include<conio.h> #include <malloc.h> typedef char TElemType; typedef struct BiTNode{ TElemType data; /*二叉树数据域*/ struct BiTNode *lchild, *rchild;/* 左右孩子指针*/ }BiTNode, *BiTree;/*二叉树的二叉链表存储表示*/ BiTree CreateBiTree(void)/*按先序次序输入二叉树中结点的值,'#'代表空树*/ { TElemType e; BiTree tmp = NULL; if( (e=getchar())!='#' ){ //getchar(); /*接收回车符*/ tmp=(BiTree)malloc(sizeof(BiTNode)); if(!tmp) return NULL; tmp->data=e; printf("input %c:left child:",e); /*请输入左孩子:*/ tm