Scala练习-二叉树查找
2017-07-05 11:19
357 查看
源码
package day15 /** * Created by doctorq on 2017/6/30. * http://blog.csdn.net/chinabhlt/article/details/47420391 * 二叉树查找 */ object BinaryTreeSearch extends App { //先序,根节点->左子树->右子树 def perOrder(node: BinaryTreeNode): Unit = { println(node.value) if (node.left != None) { // println(s"根节点:${node.value},左子节点:${node.left.get.value}") perOrder(node.left.get) } if (node.right != None) { // println(s"根节点:${node.value},右子节点:${node.right.get.value}") perOrder(node.right.get) } } //中序,左子树->根节点->右子树 def inOrder(node: BinaryTreeNode): Unit = { if (node.left != None) { // println(s"根节点:${node.value},左子节点:${node.left.get.value}") perOrder(node.left.get) } println(node.value) if (node.right != None) { // println(s"根节点:${node.value},右子节点:${node.right.get.value}") perOrder(node.right.get) } } //后序:左子树->右子树->根节点 def postOrder(node: BinaryTreeNode): Unit = { if (node.left != None) { // println(s"根节点:${node.value},左子节点:${node.left.get.value}") perOrder(node.left.get) } if (node.right != None) { // println(s"根节点:${node.value},右子节点:${node.right.get.value}") perOrder(node.right.get) } println(node.value) } //层序:按深度遍历,从根节点所在的层开始 def sequence(node: BinaryTreeNode): Unit = { } /** * 从二叉树中查找指定值的节点并返回 * 递归的方式 * * @param node 根节点 * @param value */ def searchNode(node: BinaryTreeNode, value: Int): Option[BinaryTreeNode] = { if (value == node.value) { return Some(node) } else if (value < node.value && node.left != None) { return searchNode(node.left.get, value) } else if (value > node.value && node.right != None) { return searchNode(node.right.get, value) } None } var rootNode = new BinaryTreeNode(15) val list = List(1, 4, 5, 2, 3, 8, 54, 23, 21, 43, 10, 13).sorted list.foreach(item => { rootNode.buildTree(new BinaryTreeNode(item)) }) println("先序") perOrder(rootNode) println("中序") inOrder(rootNode) println("后序") postOrder(rootNode) val result1 = searchNode(rootNode, 1) result1 match { case None => println("未发现") case node => node.get.printNode() } }
相关文章推荐
- Scala练习-二分查找
- Scala练习-顺序查找
- Scala练习-分块查找
- Scala练习-哈希查找
- Scala练习-插值查找
- Scala练习-斐波那契查找
- 第十四周项目2——二叉树排序树中查找的路径
- 第14周项目2-二叉树排序树中查找的路径
- 编程题练习1-元素查找
- 查找数组中唯一的一个数字,scala版本
- Scala练习(十八)
- 第十四周项目2-二叉树排序树中查找的路径
- 算法期中练习——1002. 合并二叉树
- 冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较
- 查找练习 hash——出现过的数字(SDUT 2123)
- c语言文件操作练习--一个简单的字典查找
- 蓝桥杯 BASIC-5 基础练习 查找整数
- 第十四周项目5—二叉树排序树中查找的路径
- 蓝桥杯 BASIC-5 基础练习 查找整数
- 查找练习 hash——出现过的数字