您现在的位置是:首页 >综合 > 2023-10-25 03:24:08 来源:

排序二叉树的删除(排序二叉树)

导读 大家好,我是小夏,我来为大家解答以上问题。排序二叉树的删除,排序二叉树很多人还不知道,现在让我们一起来看看吧!二叉排序树又叫二叉查...

大家好,我是小夏,我来为大家解答以上问题。排序二叉树的删除,排序二叉树很多人还不知道,现在让我们一起来看看吧!

二叉排序树又叫二叉查找树。

它的定义:

1、若根结点的左子树非空,则左子树上所有结点的关键字值均小于等于根结点的关键字值。

2、若根结点的右子树非空,则右子树上所有结点的关键字值均大于等于根结点的关键字值。

3、根结点的左、右子树也分别为二叉排序树。

中序遍历后得到一个有序的序列;

下面是实现的程序

/************************************************************************/

/* 题目:控制台下二叉排序树的建立,中序遍历 */

/* 时间:2010-3-11 上午10时9分 */

/* coder:huifeng00 */

/************************************************************************/

#include#include using namespace std; typedef struct node { int element; struct node* left; struct node* right; }Node,*NodePtr; void insertNode(NodePtr *head,int data)//插入节点,注意这用了指向指针的指针,很有意思 { if (*head==NULL) { *head=new Node; (*head)->element=data; (*head)->left=NULL; (*head)->right=NULL; } else { if (data<=(*head)->element) { insertNode(&((*head)->left),data); } else { insertNode(&((*head)->right),data); } } } NodePtr creatTree()//构造二叉排序树,控制台下输入整数,0表示结束输入 { NodePtr head=NULL; int data; scanf("%d",&data); while(data!=0) { insertNode(&head,data); scanf("%d",&data); } return head; } void printTree(NodePtr head)//中序遍历二叉排序树,得到有序序列 { if(head!=NULL) { printTree(head->left); printf("%d ",head->element); printTree(head->right); } } int main() { NodePtr head; printf("请输入一串整数,空格隔开,0表示输入结束 "); head=creatTree(); printf("中序遍历二叉排序树 "); printTree(head); printf(" "); return 0; } 运行结果,可以查看 http://hi.baidu.com/huifeng00/blog/item/d6b9c837d0997180a61e129d.html

本文到此讲解完毕了,希望对大家有帮助。