中序遍历一棵二叉排序树的结点就可得到排好序的结点序列。这句话对吗?

作者&投稿:乌国 (若有异议请与网页底部的电邮联系)
"先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列"这句话对吗?~

这句话是对的,对二叉排序树中序遍历可得到的序列是有序的,但有时会出现先序和中序列是相同的,这时先序列也是有序的。

键值就是key,就是该节点的权值。
由于中序遍历是先输出左子树再输出本节点最后输出右子树,遍历一颗二叉排序树得到的序列一定是严格递增序列。

对的,中序遍历一棵二叉排序树的结点就可得到排好序的结点序列这句话是没有错误的,因为二叉排序树的根节点大于左子树,小于右子树,然后使用中序遍历算法,中序遍历算法先遍历左子树,然后是根节点,然后是右子树。

根据遍历的特性,所有的先遍历的结点,一定是小于后边遍历的结点,所以说中序遍历一棵二叉排序树的结点就可以得到一个排好序的序列。

扩展资料:

二叉排序树的定义:

一棵空树,或者是具有下列性质的二叉树:

1、若左子树不空,则左子树上所有结点的值均小于它的根结点的值。

2、若右子树不空,则右子树上所有结点的值均大于它的根结点的值。

3、左、右子树也分别为二叉排序树。

4、没有键值相等的结点。

二叉排序树的性能:

每个结点的C(i)为该结点的层次数。最坏情况下,当先后插入的关键字有序时,构成的二叉排序树蜕变为单支树,树的深度为其平均查找长度(n+1)/2(和顺序查找相同),最好的情况是二叉排序树的形态和折半查找的判定树相同,其平均查找长度和log 2 (n)成正比。

最好情况下的算法时间复杂度为O(1),最坏情况下的算法时间复杂度为O(n)。

二叉排序树特点:

树的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。新插入的结点一定是一个新添加的叶子结点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。

参考资料来源:百度百科-二叉排序树



不对,假设一颗二叉树1234567,它的中序遍历序列是1245367。

对二叉排序树中序遍历可得到的序列是有序的,但有时会出现先序和中序列是相同的,这时先序列也是有序的。

或者是一棵具有如下性质的二叉树:

⑴ 若它的左子树非空,则左子树上所有结点的值均小于根结点的值;

⑵ 若它的右子树非空,则右子树上所有结点的值均大于根结点的值;

⑶ 左、右子树本身又各是一棵二叉排序树。二叉排序树的性质: 按中序遍历二叉排序树,所得到的中序遍历序列是一个递增有序序列。

扩展资料:

从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:

(1)访问结点本身(N),

(2)遍历该结点的左子树(L),

(3)遍历该结点的右子树(R)。

以上三种操作有六种执行次序:

NLR、LNR、LRN、NRL、RNL、RLN。

前三种次序与后三种次序对称,故只讨论先左后右的前三种次序。

参考资料来源;百度百科-遍历序列




1.二叉排序树的概念:
二叉排序树是一种动态树表。
二叉排序树的定义:二叉排序树或者是一棵空树,
或者是一棵具有如下性质的二叉树:
⑴ 若它的左子树非空,则左子树上所有结点的值均小于根结点的值;
⑵ 若它的右子树非空,则右子树上所有结点的值均大于根结点的值;
⑶ 左、右子树本身又各是一棵二叉排序树。二叉排序树的性质: 按中序遍历二叉排序树,所得到的中序遍历序列是一个递增有序序列。

不对,假设一颗二叉树1234567,它的中序遍历序列是1245367

对二叉排序树进行中序遍历,可以得到一个递增有序序列。王道书P173原话

已知T为一棵二叉排序树设计算法按递减次序打印各节点的值
答:BSTNode *CreateBST(KeyType A[],int n) //返回BST树根结点指针 BSTNode *bt=NULL; //初始时bt为空树 return bt; //返回建立的二叉排序树的根指针 void DispInDescrease(BSTNode *bt){ //按从小到大输出查找树中的内容,对该树中序遍历即可 DispInDescrease(bt);} ...

知树的前序遍历,后序遍历,怎么求中序遍历
答:由前序和中序遍历、由中序和后序遍历序列可以唯一确定一棵二叉树,而由前序和后序遍历序列不能唯一确定一棵二叉树。�二叉排序树对二叉树作了进一步的限定:根结点的权值大于(或小于)左子树中所有结点的权值;根结点的权值小于(或大于)其右子树中所有结点的权值。�那么如何根据...

...法建立二叉树的二叉链表存储结构,输出其先序、中序、后序遍历...
答:include "stdio.h"include "malloc.h"define ELEMTYPE char BiTNode *bulid() /*建树*/ { BiTNode *q;BiTNode *s[20];int i,j;char x;printf("请按顺序输入二叉树的结点以输入0和*号结束\n");printf("请输入要输入的为第几个结点i=\n");scanf("%d",&i);printf("请输入你要输入该...

假设一棵二叉树的按层次遍历序列为abcdefghij,中序遍历序列为dbgehjac...
答:层序遍历为二叉树的根,看中序遍历,a左边的是a的左子树的节点,右边的是右子树节点,看层序,b是a的左子树的根,c是a的右子树的跟(因为c本身就是a的右子树,由第一步可知)依次类推。一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根...

二叉排序树的建立及遍历?很急啊写一个程序
答:/*先序遍历二叉树, root为指向二叉树根结点的指针*/ { if (root!=NULL){ printf("%c",root->data); /*输出结点*/ preOrder(root ->LChild);/*先序遍历左子树*/ preOrder(root ->RChild); /*先序遍历右子树*/ } } void inOrder(BiTree root)/*中序遍历二叉树, root为指向...

...法建立二叉树的二叉链表存储结构,输出其先序、中序、后序遍历...
答:include "stdio.h"include "malloc.h"define ELEMTYPE char BiTNode *bulid() /*建树*/ { BiTNode *q;BiTNode *s[20];int i,j;char x;printf("请按顺序输入二叉树的结点以输入0和*号结束\n");printf("请输入要输入的为第几个结点i=\n");scanf("%d",&i);printf("请输入你要输入该...

编写算法:已知二叉排序树按二叉链表形式存储,树中结点各不相同,欲得...
答:首先看下二叉排序树的定义:二叉排序树(Binary Sort Tree)又称二叉查找树,亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、...

二叉排序树的实现(c语言)
答:node *right; //右孩子结点 void inorder(node *&root) //中序遍历,符合升序输出 { if(root!=NULL){ inorder(root->left);printf("%d ",root->data);inorder(root->right);} } void insert(node *&ptr,int item) //在查找树中插入元素 { if(ptr==NULL)ptr=new node(item...

设计一个算法,求出指定结点在给定二叉排序树中的层次。(假设二叉排
答:测试结果:创建二叉排序树,请输入结点的总数量: 7请连续输入7个结点的数据: 2 4 1 3 7 9 5先序遍历序列: 2 1 4 3 7 5 9中序遍历序列: 1 2 3 4 5 7 9后序遍历序列: 1 3 5 9 7 4 2输入要查找的结点的数值(0退出): 9该结点的层次是 4输入要查找的结点的数值(0退出): 7该...