文章目录
- 先序创建二叉树
- 二叉树的中序、后须、层次遍历
- 二叉排序树的建立
先序创建二叉树
typedef struct BiTNode {TElemType data;struct BiTNode* lchid, * rchid;
}BiTNode,*BiTree;
BiTree CreateBiTree(){BiTree T;TElemType item;cin >> item;if (item == '#') { T = NULL; }else {T = (BiTree)malloc(sizeof(BiTNode));T->data = item;T->lchid = CreateBiTree();T->rchid = CreateBiTree();}return T;
}
二叉树的中序、后须、层次遍历
void InOrderTraverse(BiTree t)
{SqStack S;InitStack(S);BiTree p = t;while (p||!StackEmpty(S)){if (p) {Push(S, (SElemType)p);p = p->lchid;}else {Pop(S, (SElemType&)p);cout << p->data;p = p->rchid;}}}
void PostOrder(BiTree t) {if (t) {PostOrder(t->lchid);PostOrder(t->rchid);cout << t->data;}
}
void LevelOrder(BiTree t)
{if (t){LinkQueue Q;InitQueue(Q); EnQueue(Q, (int)t); while (!QueueEmpty(Q)) {DeQueue(Q, (int&)t);cout << t->data;if (t->lchid) {EnQueue(Q, (QElemType)t->lchid);}if (t->rchid) {EnQueue(Q, (QElemType)t->rchid);}}DestoryQueue(Q);}
}
二叉排序树的建立
typedef struct BiTNode {int data;struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;int SearchBST(BiTree T, int key, BiTree f, BiTree& p)
{if (!T){p = f;return 0;}else if (key == T->data){p = T;return 1;}else if (key < T->data)return (SearchBST(T->lchild, key, T, p));elsereturn (SearchBST(T->rchild, key, T, p));
}int InsertBST(BiTree& T, int e)
{BiTree p = NULL, f = NULL;if (!SearchBST(T, e, f, p)) {BiTree s = (BiTree)malloc(sizeof(BiTNode));s->data = e;s->lchild = s->rchild = NULL;if (!p) T = s; else if (e< p->data) p->lchild = s;else p->rchild = s; return 1;}else return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!