二叉排序树的构建

来源:互联网 发布:20岁长高的秘诀 知乎 编辑:程序博客网 时间:2024/06/06 17:42

下面是二叉排序树构建的代码,按照严蔚敏数据结构教材上的方法写的:

#include<iostream>using namespace std;struct BiTreeNode{int data;BiTreeNode *lchild;BiTreeNode *rchild;};BiTreeNode* p;//BiTree* SearchBST(BiTree* T, int key)//{//if ((!T)||T->data==key)return T;//else if (key < T->data)return SearchBST(T->lchild, key);//else return SearchBST(T->lchild, key);//}bool SearchBST(BiTreeNode* T, int key, BiTreeNode* f, BiTreeNode*& p){if (!T){p = f; return false;}else if ( key == T->data ){ p = T; return true; }else if ( key < T->data )return SearchBST(T->lchild, key, T, p);else return SearchBST(T->rchild, key, T, p);}bool InsertBST(BiTreeNode*& T, int key){if (!SearchBST(T, key, NULL, p)){BiTreeNode* Node = new BiTreeNode();Node->data = key;Node->lchild = Node->rchild = NULL;if (!p)T = Node; else if (key < p->data) p->lchild = Node;else p->rchild = Node; return true;} else return false;}void main(){int arr[] = { 45, 12, 53, 3, 37, 100, 24, 61, 90, 78 };BiTreeNode* head = NULL;for (int i = 0; i < sizeof(arr) / sizeof(int); ++i)InsertBST(head, arr[i]);}




0 0
原创粉丝点击