Scala练习-二叉树查找
来源:互联网 发布:js获取相同class的值 编辑:程序博客网 时间:2024/05/18 03:28
源码
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() }}
阅读全文
0 0
- Scala练习-二叉树查找
- 二叉查找树练习
- 二叉查找树练习代码
- Scala练习-二分查找
- Scala练习-顺序查找
- Scala练习-分块查找
- 算法练习四 二叉查找树
- golang 写二叉查找树练习
- 算法练习__二叉查找树
- Scala练习-哈希查找
- Scala练习-插值查找
- Scala练习-斐波那契查找
- 编程练习——二叉查找树(BinarySearchTree)
- 算法练习之二叉查找树 C++实现
- 查找--二叉查找树
- Scala实现二叉搜索树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- JavaScript里的循环方法之forEach,for...in,for...of
- 进程和线程的区别
- 创建mysql用户,并分配一个数据库
- Lumen 5.4 中 Http options类型请求返回405的问题
- nginx
- Scala练习-二叉树查找
- UnityShader入门精要学习笔记(二):数学知识
- 自定义Button,Button的父类控件如果有Press按下事件的时候的就return
- centos 6.9 快速部署lnmp网站
- Spring之Bean实现了ApplicationContextAware等aware接口,对于setApplicationContext方法执行时间点的说明
- Flex 布局
- Dataguard网络优化调整
- 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据库
- EasyUI—右键关闭选项卡