时间:2021-05-20
二叉查找树性质
1、二叉树
每个树的节点最多有两个子节点的树叫做二叉树。
2、二叉查找树
一颗二叉查找树是按照二叉树的结构来组织的,并且满足一下性质:
一个节点所有左子树上的节点不大于盖节点,所有右子树的节点不小于该节点。
对查找树的操作查询,插入,删除等操作的时间复杂度和树的高度成正比, 因此,构建高效的查找树尤为重要。
查找树的遍历
先序遍历
查找树的遍历可以很简单的采用递归的方法来实现。
struct list{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};void preorder(struct list *t)//t为根节点的指针{ if(t!=NULL) { printf("%d,",t->a); preorder(t->left); perorder(t->right); }}中序遍历
struct list{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};void preorder(struct list *t)//t为根节点的指针{ if(t!=NULL) { preorder(t->left); printf("%d,",t->a); perorder(t->right); }}后序遍历
struct list{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};void preorder(struct list *t)//t为根节点的指针{ if(t!=NULL) { preorder(t->left); perorder(t->right); printf("%d,",t->a); }}查找树的搜索
给定关键字k,进行搜索,返回结点的指针。
struct list{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};struct list * search(struct list *t,int k){ if(t==NULL||t->a==k) return t; if(t->a<k) search(t->right); else search(t>left);};也可以用非递归的形式进行查找
struct list{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};struct list * search(struct list *t,int k){ while(true) { if(t==NULL||t->a==k) { return t; break; } if(t->a<k) t=t->rigth; else t=t->left; }};最大值和最小值查询
根据查找树的性质,最小值在最左边的结点,最大值的最右边的 结点,因此,可以直接找到。
下面是最大值的例子:
{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};struct lsit *max_tree(struct lsit *t){ while(t!=NULL) { t=t->right; } return t;};查找树的插入和删除
插入和删除不能破坏查找树的性质,因此只需要根据性质,在树中找到相应的位置就可以进行插入和删除操作。
struct list{ struct list *left;//左子树 struct list *right;//右子树 int a;//结点的值};void insert(struct list *root,struct list * k){ struct list *y,*x; x=root; while(x!=NULL) { y=x; if(k->a<x->a) { x=x->left; } else x=x->right; } if(y==NULL) root=k; else if(k->a<y->a) y->left=k; else y->right=k;}感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C语言实现二叉树的搜索及相关算法。分享给大家供大家参考,具体如下:二叉树(二叉查找树)是这样一类的树,父节点的左边孩子的key都小于它,右边孩子的
二叉排序树(BST)又称二叉查找树、二叉搜索树二叉排序树(BinarySortTree)又称二叉查找树。它或者是一棵空树;或者是具有下列性质的二叉树:1.若左子
本文实例讲述了C语言判定一棵二叉树是否为二叉搜索树的方法。分享给大家供大家参考,具体如下:问题给定一棵二叉树,判定该二叉树是否是二叉搜索树(BinarySear
C++数据结构二叉树(前序/中序/后序递归、非递归遍历)二叉树的性质:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。例:实例代
本文实例讲述了JavaScript数据结构之二叉树的查找算法。分享给大家供大家参考,具体如下:前面文章介绍了二叉树的遍历,现在谈谈在二叉树中进行查找。对二叉查找