校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 二叉树遍历
题目

二叉排序树如何实现?

解答

首先要了解而叉排序树如何建立,给定一组数组,建立一个而叉排序树

#include <iostream> 

typedef struct BitNode{
int data;
struct BitNode *lchild, *rchild;
}BitNode, *BiTree;

bool BSTInsert(BitNode * &p, int element)
{
if(NULL == p) // 空树
{
p = new BitNode;
p->data = element;
p->lchild = p->rchild = NULL;
return true;
}

if(element == p->data) // BST中不能有相等的值
return false;

if(element < p->data) // 递归
return BSTInsert(p->lchild, element);

return BSTInsert(p->rchild, element); // 递归
}

void createBst(BitNode * &T, int a[], int n){
T = NULL;
int i;
for(i = 0; i < n; i++){
BSTInsert(T, a[i]);
}
}

//先序遍历
void preOrderTraverse(BiTree T)
{
if(T)
{
printf("%d ", T->data);
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
}
}

//中序遍历
void inOrderTraverse(BiTree T)
{
if(T)
{
inOrderTraverse(T->lchild);
printf("%d ", T->data);
inOrderTraverse(T->rchild);
}
}

int main(){
int a[10] = {1,3,5,2,9,4,6,0,7,8};
BiTree T;
createBst(T, a, 10);

preOrderTraverse(T);
printf("\n");
inOrderTraverse(T);


return 0;
}

第一个是先序遍历的结果,第二个是中序遍历的结果

先序遍历:中->左->右
中序遍历:左->中->右
C 0条回复 评论

帖子还没人回复快来抢沙发