int main() { Status i; int j; position p; TElemType e; TElemType s; InitBiTree( T ); CreateBiTree( T ); printf("After initializing the Tree, is the Tree empty? Yes:1, No:0, the depth is: %d\n", BiTreeEmpty( T ), BiTreeDepth(T)); i = Root( T, &e ); if( i ) printf("The root of the tree is: %d\n", e); else printf("The tree is empty!\n"); printf("Traverse_1:\n"); LevelOrderTraverse( T, visit ); printf("Traverse_2:\n"); InOrderTraverse( T, visit ); printf("Traverse_3:\n"); PostOrderTraverse( T, visit ); printf("input the level number to be modified \n"); scanf(" %d%d", &p.level, &p.order); e = Value( T, p); printf("The old value is %d, input new value: ", e); scanf(" %d", &e); Assign( T, p, e); printf("Traverse_1:\n"); PreOrderTraverse( T, visit ); printf("The parent of node %d is %d, left and right children are: ", e, Parent(T, e)); printf("%d, %d, left and rignt brothers are:", LeftChild(T, e), RightChild(T, e)); printf("%d, %d\n", LeftSibling(T, e), RightSibling(T, e)); InitBiTree( s ); printf("Initializing a Tree that has empty right subtree:\n"); CreateBiTree( s ); printf("The tree s insert to the tree T, input the parent node of s, s is left subtree or right subtree."); scanf(" %d%d%d", &p.level, &p.order, &j); DeleteChild( T, p, j); Print( T ); clearBiTRee( T ); printf("After clearing the tree, is the tree empty? Yes:1, No:0 %d\n", BiTreeEmpty( T ), BiTreeDepth(T)); i = Root( T, &e ); if( i ) printf("The root of the bitree is %d\n", e); else printf("The tree is empty, no root!\n"); }
link CreateBiTree(char* str1, char* str2, int num) { int k = 0; char tmp; if(num <= 0) return NULL; link t = Node(str1[0], NULL, NULL); for(tmp = *str1; tmp != str2[k]; k++) ; t->l = CreateBiTree(str1 + 1, str2, k); t->r = CreateBiTree(str1 + k +1, str2 + k + 1, num - k -1); return t; }
void CreateBiTree(BiTree *bt) { char ch; ch=getchar(); if(ch=='.')*bt=NULL; else { *bt=(BiTree)malloc(sizeof(BiTNode)); (*bt)->data=ch; CreateBiTree(&((*bt)->LChild)); CreateBiTree(&((*bt)->RChild)); } }
void main() { Status i; int j; position p; TElemType e; SqBiTree T,s; InitBiTree(T); CreateBiTree(T); printf("建立二叉树后,树空否?%d(1:是 0:否) 树的深度=%d\n",BiTreeEmpty(T),BiTreeDepth(T)); i=Root(T,&e); if(i) printf("二叉树的根为:%d\n",e); else printf("树空,无根\n"); printf("层序遍历二叉树:\n"); LevelOrderTraverse(T,visit); printf("中序遍历二叉树:\n"); InOrderTraverse(T,visit); printf("后序遍历二叉树:\n"); PostOrderTraverse(T,visit); printf("请输入待修改结点的层号 本层序号: "); scanf("%d%d",&p.level,&p.order); e=Value(T,p); printf("待修改结点的原值为%d请输入新值: ",e); scanf("%d",&e); Assign(T,p,e); printf("先序遍历二叉树:\n"); PreOrderTraverse(T,visit); printf("结点%d的双亲为%d,左右孩子分别为",e,Parent(T,e)); printf("%d,%d,左右兄弟分别为",LeftChild(T,e),RightChild(T,e)); printf("%d,%d\n",LeftSibling(T,e),RightSibling(T,e)); InitBiTree(s); printf("建立右子树为空的树s:\n"); CreateBiTree(s); printf("树s插到树T中,请输入树T中树s的双亲结点 s为左(0)或右(1)子树: "); scanf("%d%d",&e,&j); InsertChild(T,e,j,s); Print(T); printf("删除子树,请输入待删除子树根结点的层号 本层序号 左(0)或右(1)子树: "); scanf("%d%d%d",&p.level,&p.order,&j); DeleteChild(T,p,j); Print(T); ClearBiTree(T); printf("清除二叉树后,树空否?%d(1:是 0:否) 树的深度=%d\n",BiTreeEmpty(T),BiTreeDepth(T)); i=Root(T,&e); if(i) printf("二叉树的根为:%d\n",e); else printf("树空,无根\n"); }
//创建一个二叉树,约定用户按照前序遍历的方式输入数据 void CreateBiTree(BiTree *T) { char c; scanf("%c",&c); if(' ' == c){ *T = NULL; }else{ *T = (BiTNode *)malloc(sizeof(BiTNode)); (*T)->data = c; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } }
BiTree CreateBiTree()//先序递归创建树 { int p;BiTree T; scanf("%d",&p);//注意每输入两个值的时候用空格各隔开 if(p==0) T=NULL; else{ T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间 T->data=p; T->lchild=CreateBiTree(); T->rchild=CreateBiTree(); } return (T); }
//µÝ¹é½¨Á¢¶þ²æÊ÷ int CreateBiTree(BiTree *T) { char ch=getchar(); if(ch=='#') (*T)=NULL; else { (*T)=(BiTNode *)malloc(sizeof(BiTNode)); (*T)->data=ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } return 1; }
BiTree CreateBiTree(BiTree &T) { // 算法6.4 // 按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树, // 构造二叉链表表示的二叉树T。 char ch; scanf("%c",&ch); if (ch=='#') T = NULL; else { if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) return ERROR; T->data = ch; // 生成根结点 CreateBiTree(T->lchild); // 构造左子树 CreateBiTree(T->rchild); // 构造右子树 } return T; } // CreateBiTree
//二叉树的创建 void CreateBiTree(BiThrTree &btt) { char c; c=getchar(); if(c=='#') btt=NULL; else { btt=(BiThrTree)malloc(sizeof(BiThrNode)); btt->data=c; CreateBiTree(btt->lchild); CreateBiTree(btt->rchild); } }
Status CreateBiTree(BiTree &T) //按先序次序输入二叉树中结点的值(一个字符),空格表示空树 { //构造二叉链表表示的二叉树T char ch; scanf("%c",&ch); if(ch=='#')T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW); T->data=ch; //生成根结点 CreateBiTree(T->lchild); //构造左子树 CreateBiTree(T->rchild); //构造右子树 } return OK; }//CreatBiTree
/* 以先序遍历序列构造二叉链表存储的二叉树 */ void CreateBiTree(BiTree *T) { char ch; scanf("%c", &ch); if(ch == '0') *T = NULL; /* 读入0时,将结点置空 */ else { *T = malloc(sizeof(BiNode)); assert(*T != NULL); (*T)->data = ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } }
int CreateBiTree(BiTree * T) { //声明的就是一个BiTree类型的指针,通过修改来对main中的T做修改,然后使其指向根结点 // 按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树, // 构造二叉链表表示的二叉树T。 int ch; printf("请输入一个根结点的值(如果为空,则输入0)\n"); scanf("%d",&ch); if (ch==0) (*T)= NULL; else { if (!(*T = (BiTNode *)malloc(sizeof(BiTNode)))) return ERROR; (*T)->data = ch; // 生成根结点 CreateBiTree(&(*T)->lchild); // 构造左子树 CreateBiTree(&(*T)->rchild); // 构造右子树 } return OK; } // CreateBiTree
BiTree CreateBiTree() { char ch; BiTree T; scanf("%c",&ch); if(ch=='#') T=NULL; else { T=(BiTree)malloc(sizeof(BiTNode)); T->data=ch; T->lchild=CreateBiTree(); T->rchild=CreateBiTree(); } return T; }
int main() { Tree T; int k = 2; T = CreateBiTree(T); // printf("the %dth in preorder : %c\n", k, KthPreOrder(T, k)); printf("the %dth in preorder : %c\n", k, PreNode(T, k)); }
void BiSortTree::AddBiTree(combine *x)//输入元素不可以重复 { BiTree *p=NULL,*q=NULL,*pre=NULL; bool LR=false; int lev=0; p=root; while(p!=NULL){ if(p->value->key==x->key){//注意释放空间 delete x; cout<<"main key is exist,can't insert!\n"; return ; } pre=p; lev++; if(p->value->key>x->key){ p=p->left; LR=false; } else{ p=p->right; LR=true; } ChainAdd(pre,LR); } q=CreateBiTree(x); if(lev>level) level=lev; count++; if(root!=NULL) LR?pre->right=q:pre->left=q; else root=q; BlanceAdd(); ChainDel(); }
void main() { BiTree bt; printf("Enter a tree: "); CreateBiTree(&bt); LayerOrder(bt); }
void CreateBiTree(BiTree *&T) { if(ch[i]=='#') { i++; T=NULL; } else { T=(BiTree *)malloc(sizeof(BiTree)); T->data=ch[i]; i++; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } }
bool CreateBiTree(BiTree &root) { char ch; scanf("%c", &ch); if (ch == '\n') scanf("%c", &ch); //Åųý»Ø³µ¼ü if (ch == '.') root = NULL; else { if (!(root = (BiTree)malloc(sizeof(BiTnode)))) exit(0); root->date = ch; CreateBiTree(root->lchild); CreateBiTree(root->rchild); } return true; }
int main() { BiTree T; SqStack S; Initstack(&S); CreateBiTree(&T); // printf("ÏÈÐòµÝ¹é±éÀú"); // PreOrder(T); // printf("\n"); // printf("ÖÐÐòµÝ¹é±éÀú"); // InOrder(T); // printf("\n"); // printf("ºóÐòµÝ¹é±éÀú"); // PostOrder(T); printf("\n"); printf("ÏÈÐò·ÇµÝ¹é±éÀú"); PreOrderUn(T); printf("\n"); // printf("ÖÐÐò·ÇµÝ¹é±éÀú"); // InOrderUn(T); printf("\n"); // printf("ºóÐò·ÇµÝ¹é±éÀú"); // PostOrderUn(&S,T); printf("\n"); return 0; }
int main() { BiTree root=NULL; printf("Create BiTree..\n"); CreateBiTree(&root); printf("\nDone!!!!\n"); printf("PreOrderTraverse..\n"); PreOrderTraverse( root); printf("\n"); PreOrderTraverse_1( root); printf("\nDone!!!!\n"); printf("InOrderTraveerse..\n"); InOrderTraverse(root); printf("\n"); InOrderTraverse_1(root); printf("\nDone!!!!\n"); printf("PostOrderTravaerse..\n"); PostOrderTraverse(root); printf("\n"); PostOrderTraverse_1(root); printf("\nDone\n"); BiTree_free(&root); return 0; }
Status CreateBiTree(BiTree &T) { char ch ; scanf("%c",&ch); getchar(); if(ch == ' ') T = NULL; else { if(!(T = (BiTNode *)malloc(sizeof(BiTNode)))) exit(0); T->data = ch; //生成根节点 CreateBiTree(T->lchild); //构造左子树 CreateBiTree(T->rchild); //构造右子树 } return OK; }
void main() { BiTree T; printf("input\n"); CreateBiTree(T); pre(T); }
int main() { BiThrTree bt,btt; CreateBiTree(bt); InOrderTraverse(btt,bt); PreOrderTraverse(bt); printf("\n"); return 0; }
int main() { int level = 1; BiTree T = NULL; CreateBiTree(&T); PreOrderTraverse(T, level); return 0; }
BinaryTree * CreateBiTree(){ char c; BinaryTree * binaryTree=NULL; c=getchar(); if(c==' '){ binaryTree=NULL; }else{ binaryTree=InitBiTree(); binaryTree->data=c-'0'; binaryTree->lChild=CreateBiTree(); binaryTree->rChild=CreateBiTree(); } return binaryTree; }
int CreateBiTree(BiTree *T) { char data; printf("Enter data:"); scanf("%c",&data); getchar(); if(data=='#') { *T=NULL; } else { *T=(BiTree)malloc(sizeof(BiTNode)); (*T)->data=data; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } return 0; }
/* 二叉树的建立 */ void CreateBiTree(BiTree *T) { TElemtype ch; scanf("%c", &ch); if (ch == '#') *T = NULL; else { *T = (BiTree)malloc(sizeof(BiTNode)); if (!*T) exit(OVERFLOW); (*T)->data = ch; // 生成根结点 CreateBiTree(&(*T)->lchild); // 递归构造左子树 CreateBiTree(&(*T)->rchild); // 递归构造右子树ava } }
void CreateBiTree(BiTree *T) { TElemType ch; #ifdef CHAR scanf("%c",&ch); #endif #ifdef INT scanf("%d",&ch); #endif if(ch==Nil) /* 空 */ *T=NULL; else { *T=(BiTree)malloc(sizeof(BiTNode)); if(!*T) exit(OVERFLOW); (*T)->data=ch; /* 生成根结点 */ CreateBiTree(&(*T)->lchild); /* 构造左子树 */ CreateBiTree(&(*T)->rchild); /* 构造右子树 */ } }
//#define CHAR void CreateBiTree(BiTree *T) { TElemType ch; #ifdef CHAR scanf("%c", &ch); #endif #ifdef INT scanf("%d", &ch); #endif if (ch == Nil) *T = NULL; else { *T = (struct BiTNode *)malloc(sizeof(struct BiTNode)); if (*T == NULL) exit(OVERFLOW); (*T)->data = ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } }
void main() { TElemType e; SqBiTree T; InitBiTree(T); CreateBiTree(T); printf("请输入待查询结点的值:"); scanf("%d",&e); printf("结点%d的双亲为%d,左右孩子分别为",e,Parent(T,e)); printf("%d,%d,左右兄弟分别为",LeftChild(T,e),RightChild(T,e)); printf("%d,%d\n",LeftSibling(T,e),RightSibling(T,e)); }