int main(int argc, char *argv[]) { BiTree T,H; printf("请创建一棵二叉树(如:'ABDH##I##EJ###CF##G##')\n"); CreateBinaryTree(&T); printf("\n二叉树的深度为:%d,结点数目为:%d\n",BinaryDepth(T),NodeCount(T)); printf("\n先序遍历的结果是:\n"); PreOrderTraverse(T); printf("\n中序遍历的结果是:\n"); InOrderTraverse(T); printf("\n后序遍历的结果是:\n"); PostOrderTraverse(T); printf("\n对二叉树进行中序线索化\n"); InOrderThreading(&H,T); printf("\n中序遍历线索二叉树的结果是:\n"); InOrderTraverseThreadTree(H); printf("\n摧毁一棵二叉树\n"); DestoryBinaryTree(&T); printf("\n二叉树的深度为:%d,结点数目为:%d\n",BinaryDepth(T),NodeCount(T)); return 0; }
int main(int argc, char **argv) { BiThrTree H, T; printf("请按先序输入二叉树(如:ab三个空格表示a为根结点,b为左子树的二叉树)\n"); Create_BiThrTree(&T); InOrderThreading(&H, T); printf("中序遍历(输出)二叉线索树:\n"); InOrderTraverse_Thr(H, vi); printf("\n"); DestroyBiThrTree(&H); return OK; }
int main() { BiThrTree H,T; printf("请按前序输入二叉树(如:'ABDH##I##EJ###CF##G##')\n"); CreateBiThrTree(&T); /* 按前序产生二叉树 */ InOrderThreading(&H,T); /* 中序遍历,并中序线索化二叉树 */ printf("中序遍历(输出)二叉线索树:\n"); InOrderTraverse_Thr(H); /* 中序遍历(输出)二叉线索树 */ printf("\n"); return 0; }
int main() { BiThrTree Thrt, T, p, q; CreateBiThrTree(T); InOrderThreading(Thrt, T); // InOrderTraverse_Thr(Thrt); p = Thrt->lchild; q = InPostPre(Thrt, p); if(q != NULL) { printf("%c\n", q->data); }else { printf("该节点为后序的第一个节点,没有前驱\n"); }//注意这里不可能发生q==NULL,因为本程序在生成ThreadTree时,将其做成双向的,头结点也是尾节点,都有前驱 }
void main() { BiThrTree H,T; #if CHAR printf("请按先序输入二叉树(如:ab三个空格表示a为根结点,b为左子树的二叉树)\n"); #else printf("请按先序输入二叉树(如:1 2 0 0 0表示1为根结点,2为左子树的二叉树)\n"); #endif CreateBiThrTree(&T); /* 按先序产生二叉树 */ InOrderThreading(&H,T); /* 中序遍历,并中序线索化二叉树 */ printf("中序遍历(输出)二叉线索树:\n"); InOrderTraverse_Thr(H,vi); /* 中序遍历(输出)二叉线索树 */ printf("\n"); }
int main() { BiThrTree H, T; #if CHAR printf("请按先序输入二叉树(如:ab三个空格表示a为根结点,b为左子树的二叉树)\n"); #else printf("请按先序输入二叉树(如:1 2 0 0 0表示1为根结点,2为左子树的二叉树)\n"); #endif CreateBiThrTree(&T); InOrderThreading(&H, T); printf("中序遍历(输出)二叉线索树:\n"); InOrderTraverse_Thr(H, vi); printf("\n"); return 0; }
int main() { int level = 1; BiTree p, T = NULL; CreateBiTree(&T); InOrderThreading(&p, T); // PreOrderTraverse(T, level); InOrderTraverse(p); system("pause"); return 0; }