标签:二叉查找树
//
// main.cpp
// 二叉查找树
//
// Created by Fangpin on 15/3/30.
// Copyright (c) 2015年 FangPin. All rights reserved.
//
#include <iostream>
struct Tree{//树结构
int key;
Tree *left,*right,*p;
};
// 返回指向树中最大值所在节点
Tree* Tree_max(Tree* rt){
while(rt->right!=nullptr)
rt=rt->right;
return rt;
}
//返回树中最小值所在节点
Tree* Tree_min(Tree* rt){
while(rt->left!=nullptr)
rt=rt->left;
return rt;
}
//返回节点的直接前驱节点
Tree* next(Tree *rt){
if(rt->right!=nullptr)
return Tree_min(rt->right);
Tree *x=rt,*y=x->p;
while(y!=nullptr && x==y->right){
x=y;
y=y->p;
}
return y;
}
//返回节点的直接后继节点
Tree* pre(Tree *rt){
if(rt->left!=nullptr)
return Tree_max(rt->left);
Tree *x=rt,*y=x->p;
while(y!=nullptr && y==x->left){
x=y;
y=y->p;
}
return y;
}
标签:二叉查找树
原文地址:http://blog.csdn.net/fangpinlei/article/details/44747933