二叉树之查询
二叉树的查询是建立遍历的基础上更进一步的对比查询,下面分别从前序、中序、后续三种方法中查询对应的节点。
前序查找
java
/**
* 前序查询
*/
public Person preSelectById(Integer id) {
Person person = null;
if (this.data.getId().equals(id)) {
person = this.data;
}
if (Objects.isNull(person) && Objects.nonNull(this.left)) {
person = this.left.preSelectById(id);
}
if (Objects.isNull(person) && Objects.nonNull(this.right)) {
person = this.right.preSelectById(id);
}
return person;
}
中序查找
java
/**
* 中序查询
*/
public Person midSelectById(Integer id) {
Person person = null;
if (Objects.isNull(person) && Objects.nonNull(this.left)) {
person = this.left.preSelectById(id);
}
if (this.data.getId().equals(id)) {
person = this.data;
}
if (Objects.isNull(person) && Objects.nonNull(this.right)) {
person = this.right.preSelectById(id);
}
return person;
}
后序查找
java
/**
* 后序查询
*/
public Person postSelectById(Integer id) {
Person person = null;
if (Objects.isNull(person) && Objects.nonNull(this.left)) {
person = this.left.preSelectById(id);
}
if (Objects.isNull(person) && Objects.nonNull(this.right)) {
person = this.right.preSelectById(id);
}
if (this.data.getId().equals(id)) {
person = this.data;
}
return person;
}