数据结构与算法分析(Java语言描述)(17)—— 二叉搜索树的深度优先与广度优先遍历
来源:互联网 发布:风鸣网络 编辑:程序博客网 时间:2024/06/06 12:51
二叉搜索树的深度优先遍历
先序遍历
// 先序遍历二叉搜索树 public void preOrder() { preOrder(root); } // 对以node为根的二叉搜索树进行前序遍历, 递归算法 private void preOrder(Node node) { if (node != null) { System.out.println(node.value); preOrder(node.left); preOrder(node.right); } }
中序遍历
// 中序遍历二叉搜索树 public void inOrder(){ inOrder(root); } // 对以 node 为根的二叉搜索树进行中序遍历,递归算法 private void inOrder(Node node){ if (node != null){ inOrder(node.left); System.out.println(node.value); inOrder(node.right); } }
后序遍历
// 后序遍历二叉搜索树 public void postOrder(){ postOrder(root); } // 对以 node 为根的二叉搜索树进行后序遍历,递归算法 private void postOrder(Node node){ if (node != null){ postOrder(node.left); postOrder(node.right); System.out.println(node.value); } }
二叉树的广度优先遍历
层序遍历
// 二叉搜索树的层序遍历(广度优先) public void levelOrder(){ // 使用LinkedList来作为我们的队列 LinkedList<Node> q = new LinkedList<>(); q.add(root); // 先将 根节点 放入 q 中,再移除 此节点,将此节点的 左子节点 和 右子节点 放入 q 中 // 直到 q 为空 while (!q.isEmpty()) { Node node = q.remove(); System.out.println(node.key); if (node.left != null) q.add(node.left); if (node.right != null) q.add(node.right); } }
计算二叉树的深度
// 计算二叉树的深度 public int getDepth() { return getDepth(root); } private int getDepth(Node node) { if (node == null) return 0; int left = getDepth(node.left); int right = getDepth(node.right); return left > right ? left + 1 : right + 1; }
阅读全文
0 0
- 数据结构与算法分析(Java语言描述)(17)—— 二叉搜索树的深度优先与广度优先遍历
- 数据结构与算法分析(Java语言描述)(29)—— 广度优先遍历与最短路径
- 算法与数据结构(2) -- 二叉树深度优先遍历和广度优先遍历
- 数据结构与算法分析(Java语言描述)(27)—— 深度优先遍历与连通分量
- 数据结构与算法专题之图——图的遍历(深度优先遍历和广度优先遍历)
- 数据结构与算法分析(Java 语言描述)(34)—— BST 的深度优先遍历(非递归实现)
- 深度优先遍历与广度优先遍历(c++二叉树算法实现)
- 二叉树的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)
- 树的广度优先遍历与深度优先遍历算法
- 二叉树的深度优先与广度优先遍历
- 树与二叉树的深度优先与广度优先算法(递归与非递归)
- 树与二叉树的深度优先与广度优先算法(递归与非递归)
- 二叉树的深度优先与广度优先算法
- 数据结构 - 二叉树的广度优先遍历算法(C++)
- 表头固定内容可滚动表格的3种实现方法
- 14 个你可能不知道的 JavaScript 调试技巧
- Swift 第三方库整理
- sqoop脚本
- 网站开发步骤django
- 数据结构与算法分析(Java语言描述)(17)—— 二叉搜索树的深度优先与广度优先遍历
- SHELL编程之变量详解
- ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)
- java数学函数Math类中常用的方法
- 区分:subString/ substr / slice / splice
- [转]深入理解 Promise 五部曲:1. 异步问题
- dubbo : forbid consumer
- 树形结构的处理——组合模式(二)
- Elasticsearch python 启动脚本