두 갈래 정렬 트 리 구축

1235 단어
다음은 이 진 트 리 로 구 성 된 코드 입 니 다. 엄 울 민 데이터 구조 교재 의 방법 에 따라 썼 습 니 다.
#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]);
}

좋은 웹페이지 즐겨찾기