三种查找方式:
前序查找、中序查找、后序查找。
- 前序查找
比较当前节点,如果是,返回查找结果。如果不是就向左递归查找,如果左边没有就向右边递归查找。设置no=5,针对该题,前序遍历共4次。 - 中序遍历 先向左递归查找,如果左子树没有,再比较当前节点,如果仍然不是则向右遍历查找。
- 后序遍历 先向左递归查找,如果左子树没有,就向右边子树递归查找,如果还没有,再比较当前节点。
代码实现
package chapter18.binarytree
object BinaryTreeDemo {
def main(args: Array[String]): Unit = {
//先使用比较简单的方法,直接关联
val root = new HeroNode(1, "宋江")
val hero2 = new HeroNode(2, "吴用")
val hero3 = new HeroNode(3, "卢俊义")
val hero4 = new HeroNode(4, "林冲")
val hero5 = new HeroNode(5, "关胜")
root.left = hero2
root.right = hero3
hero3.left = hero5
hero3.right = hero4
val binaryTree = new BinaryTree
binaryTree.root = root
// println("前序查找")
// val resNode = binaryTree.preOrderSearch(3)
// if (resNode != null) {
// printf("找到,id = %d name = %s", resNode.no, resNode.name)
// }