二叉查找树后继节点和前驱节点查找
来源:互联网 发布:淘宝发货更改地址 编辑:程序博客网 时间:2024/04/27 18:47
二叉查找树按照二叉树进行组织。二叉查找树关键字的存储方式总是瞒住二叉查找树性质:
设x为二查查找树种一个节点。如果y是x的左子树中的一个节点,那么key[x] >= key[y]。如果y是x的右子树的一个节点,那么key[x] <= key[y]。
这样对二叉查找树进行中序遍历就可得到书中所有元素的一个非降序排列。
查找某一个存在节点的前驱和后继。某一个节点x的后继就是大于key[x]的关键字中最小的那个节点,前驱就是小于key[x]的关键字中最大的那个节点。查找二叉前驱和后继节点的算法如下所示:
typedef struct _node { struct _node *left_child; struct _node *right_child; struct _node * parent;ctype data; }node; //树节点数据结构定义typedef node* Tree;//查找二叉查找树中关键字最小的节点,返回指向该节点的指针Tree tree_minimum(Tree root){Tree p = root;while (p->left_child != null)p = p->left_child;return p;}//查找二叉查找树中关键字最大的节点,返回指向该节点的指针Tree tree_maxmum(Tree root){Tree p = root;while (p->right_child != null){p = p->right_child;}return p;}//查找二叉查找树中节点x的后继节点,返回指向该节点的指针//在查找过程中,如果节点x右子树不为空,那么返回右子树的最小节点即可//如果节点x的右子树为空,那么后继节点为x的某一个祖先节点的父节点,而且该祖先节点是作为其父节点的左儿子Tree tree_successor(Tree x){if (x->right_child != null)return tree_minimum(x->right_child);//x用来保存待确定的节点//y为x的父节点Tree y = x->parent;while (y != NULL && x == y->right_child){x = y;y = y->parent;}return y;}//查找二叉查找树中节点x的前驱节点,返回指向该节点的指针//在查找过程中,如果节点x左子树不为空,那么返回左子树的最大节点即可//如果节点x的左子树为空,那么前驱节点为x的某一个祖先节点的父节点,而且该祖先节点是作为其父节点的右儿子Tree tree_predecessor(Tree x){if (x->left_child != null)return tree_maxmum(x->left_child);Tree y = x->parent;while (y != NULL && x == y->left_child){x = y;y = y->parent;}return y;}
- 二叉查找树后继节点和前驱节点查找
- 二叉查找树后继节点和前驱节点查找
- 【IT笔试面试题整理】二叉查找树后继节点和前驱节点查找 --转
- java实现TreeSet,迭代器使用二叉查找树,每个节点有前驱和后继
- 二叉树的遍历 插入 查找 删除 最大值 最小值 前驱 后继节点的查找
- 求二叉查找树指定节点后继
- 查找线索二叉树的前驱和后继
- 线索二叉树中查找前驱和后继的问题
- 求二叉搜索树任一节点的前驱后继节点
- 二叉查找树带父节点指针的创建,销毁,查找,删除,插入,找前驱后继,找最小值最大值(递归和非递归的实现)
- 二叉查找树查找后继,前驱的问题
- 二叉树前驱后继的查找(这个容易理解)
- 二叉树的线索化及其前驱后继查找
- 二叉查找树前驱、后继,非递归不使用栈不使用访问标记的中序遍历,最大最小节点
- 查找二叉树节点
- 二叉查找树(4) - 中序查找一个给定值的前驱以及后继
- 关于二叉查找树中的某个节点的前趋和后继的算法(Python实现)
- 二叉树的前驱和后继
- java 小应用程序
- 使用class-dump来生成iphone private api 头文件
- android读写文件
- shell:if
- flex string 毫秒 date datefild
- 二叉查找树后继节点和前驱节点查找
- 常用的正则表达式
- perform useful /etc/hosts
- mmap1-map the ordinary file
- 模式对话框Dialog背景的透明度&黑暗度设置方法
- 常用却不能明确给出解释的技术词语
- Hdu3833 YY's new problem 哈希表(3)
- ubuntu下c/c++开发环境配置
- IOS 开发 有关iPhone程序的安装目录-UUID 唯一标识