《以同样的方法可画出该二叉树.ppt》由会员分享,可在线阅读,更多相关《以同样的方法可画出该二叉树.ppt(10页珍藏版)》请在三一文库上搜索。
1、p. 127 12,(1) 已知二叉树的前序序列为ABDGHCEFI和中序序列GDHBAECIF,则可以根据前序序列找到根结点为A,由此,通过中序序列可知它的两棵子树包分别含有GDHB和ECIF结点,又由前序序列可知B和C分别为两棵子树的根结点.以此类推可画出所有结点。 (2)以同样的方法可画出该二叉树。 (3)这两棵不同的二叉树。:,p. 127 12,H,p. 127 12,(3)这两棵不同的二叉树。:,p. 127 13,p. 128 26,typedef char DataType; /定义DataType类型 typedef struct node DataType data; st
2、ruct node *lchild, *rchild; BinTNode, *BinTree; void CopyTree(BinTree root,BinTree *newroot) 就是我们上课经常演示的形式 void CopyTree (BinTNode *root, BinTNode *pnewroot),p. 128 26,void CopyTree(BinTNode *root, BinTNode *pnewroot) /拷贝二叉树 if(root) /如果结点非空 /按前序序列拷贝 *pnewroot=new BinTNode; /生成新结点 (*pnewroot)-data=r
3、oot-data; /拷贝结点数据 CopyTree(root-lchild, /将结点置空 ,p. 128 27(1),BinTNode *SchBTree(BinTNode *T, DataType x) BinTNode *s100, *p; int top, i; if(!T) return NULL; s0=T; top=1; while(top0) p=s-top; if(p-data=x) return p; if (p-rchild!=NULL) stop+=p-rchild; if(p-lchild!=NULL) stop+=p-lchild; return NULL; ,p
4、. 128 27(2),int InLevel(BinTNode *T, DataType x) BinTNode *q100, *p; int front, rear, k, lev100; if(T=NULL) return -1; /空树 q0=T; lev0=1; front=0; rear=1; while(frontdata=x) return k; if(p-lchild!=NULL) qrear=p-lchild; levrear+=k+1; if(p-rchild!=NULL) qrear=p-rchild; levrear+=k+1; return 0; / x的结点不在树
5、中 ,p. 128 28,#define M 100 char TM; void Preorder(char *T, int n) int i, j, sM, top=0; if(n=0) return; s0=0; top=1; while(top0) i=s-top; cout Ti; if (2*i+2n) j=2*i+2; stop+=j; /右子结点下标入栈 if (2*i+1n) j=2*i+1; stop+=j; /左子结点下标入栈 ,p. 128 29,void Levorder(BinTNode *T) BinTNode *q100, *p; int front, rear; if(T=NULL) return; q0=T; front=0; rear=1; while(frontdata; if(p-lchild!=NULL) qrear+=p-lchild; if(p-rchild!=NULL) qrear+=p-rchild; ,
链接地址:https://www.31doc.com/p-2160499.html