开发中常见的算法汇总之-树的(前中后)序遍历

版权声明:有关原创文章的版权 ,goblog上原创文章未经本人许可,不得用于商业用途。转载请注明出处,否则属于侵权行为。关于转载文章本人仅用作个人技术学习用途 https://blog.csdn.net/a164753752/article/details/90167641
#### 树的(前/中/后)序遍历 - 核心思想 - 从根节点开始往下先选其中一个子节点开始深层次的遍历,然后回到根节点接着找根节点的其他子节点进行深层次的遍历 - 特性 - 借助栈存储结构按照根节点的访问顺序进行遍历规则的划分 - 分为先序遍历(根节点-左子节点-右子节点)、中序遍历(左子节点-根节点-右子节点)、后序遍历(左子节点-右子节点-根节点) - 图解 006tNc79gy1g2jkkgryklj30vq0g6ac8.jpg - 示例 ```java package com.lyd.algorithm.search; import com.lyd.datastructure.tree.RedBlackTree; import java.util.LinkedList; import java.util.Queue; /** * 描述:树的遍历 *

* #前序遍历 * #中序遍历 * #后序遍历 *

* * @author lyd Date 2019-04-28 ProjectName:datastructure-algo Version: 1.0 */ public class TreeSearch> { /** * 前序遍历 * 父节点-左节点-右节点 * * @param node 根节点 */ void preOrder(RedBlackTree.Node node) { if (null == node) { return; } System.out.print(node.getValue() + "\t"); preOrder(node.getLeft()); preOrder(node.getRight()); } /** * 中序遍历 * 左节点-父节点-右节点 * * @param node 根节点 */ void inOrder(RedBlackTree.Node node) { if (null == node) { return; } inOrder(node.getLeft()); System.out.print(node.getValue() + "\t"); inOrder(node.getRight()); } /** * 后续遍历 * 左节点-右节点-父节点 * * @param node 根节点 */ void postOrder(RedBlackTree.Node node) { if (null == node) { return; } postOrder(node.getLeft()); postOrder(node.getRight()); System.out.print(node.getValue() + "\t"); } public static void main(String[] args) { TreeSearch treeSearch = new TreeSearch<>(); RedBlackTree redBlackTree = new RedBlackTree<>(); for (int i = 1; i <= 10; i++) { redBlackTree.put(i); } treeSearch.preOrder(redBlackTree.getRoot()); System.out.println(); treeSearch.inOrder(redBlackTree.getRoot()); System.out.println(); treeSearch.postOrder(redBlackTree.getRoot()); } } ```

猜你喜欢

转载自blog.csdn.net/a164753752/article/details/90167641