二叉树遍历 刺骨的言语ヽ痛彻心扉 2024-02-18 15:53 4阅读 0赞 一、基本概念 > 每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 > > 性质: > > > 1、非空二叉树的第n层上至多有2^(n-1)个元素。 > > > > 2、深度为h的二叉树至多有2^h-1个结点。 > > 满二叉树:所有终端都在同一层次,且非终端结点的度数为2。 > > > 在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。 > > 完全二叉树:除了最大的层次即成为一颗满二叉树且层次最大那层所有的结点均向左靠齐,即集中在左面的位置上,不能有空位置。 > > > 对于完全二叉树,设一个结点为i则其父节点为i/2,2i为左子节点,2i+1为右子节点。 > > > > > > 二、二叉树的遍历 > > 遍历即将树的所有结点访问且仅访问一次。按照根节点位置的不同分为前序遍历,中序遍历,后序遍历。 > > > > > > > 前序遍历:根节点->左子树->右子树 > > > 中序遍历:左子树->根节点->右子树 > > > > > > > > > 后序遍历:左子树->右子树->根节点 > > > > 例如:求下面树的三种遍历 > > ![0_13166086420zyt.gif][] > > > > > > > 前序遍历:abdefgc > > > 中序遍历:debgfac > > > > > > > > > 后序遍历:edgfbca > > > > > > > > > > > > > > > > 今天练习用java实现二叉树的遍历算法,首先我先编写二叉树类BinaryTree,代码如下: > > > > > > package test; > > > > > > /\*\* > > \* @description > > \* @date 2017-10-17下午3:31:31 > > \* @author Administrator > > \*/ > > public class BinaryTree \{ > > int data; // 根节点数据 > > BinaryTree left; // 左子树 > > BinaryTree right; // 右子树 > > > > > > public BinaryTree(int data) // 实例化二叉树类 > > \{ > > this.data = data; > > left = null; > > right = null; > > \} > > > > > > public void insert(BinaryTree root, int data) \{ // 向二叉树中插入子节点 > > if (data > root.data) // 二叉树的右节点都比根节点大 > > \{ > > if (root.right == null) \{ > > root.right = new BinaryTree(data); > > \} else \{ > > this.insert(root.right, data); > > \} > > \} else \{ // 二叉树的左节点都比根节点小 > > if (root.left == null) \{ > > root.left = new BinaryTree(data); > > \} else \{ > > this.insert(root.left, data); > > \} > > \} > > \} > > \} > > > > 当建立好二叉树类后可以创建二叉树实例,并实现二叉树的先根遍历,中根遍历,后根遍历,代码如下: > > > > > > package test; > > > > > > /\*\* > > \* @description > > \* @date 2017-10-17下午3:33:58 > > \* @author Administrator > > \*/ > > public class BinaryTreePreorder \{ > > public static void preOrder(BinaryTree root) \{ // 先根遍历 > > if (root != null) \{ > > System.out.print(root.data + "-"); > > preOrder(root.left); > > preOrder(root.right); > > \} > > \} > > > > > > public static void inOrder(BinaryTree root) \{ // 中根遍历 > > > > > > if (root != null) \{ > > inOrder(root.left); > > System.out.print(root.data + "--"); > > inOrder(root.right); > > \} > > \} > > > > > > public static void postOrder(BinaryTree root) \{ // 后根遍历 > > > > > > if (root != null) \{ > > postOrder(root.left); > > postOrder(root.right); > > System.out.print(root.data + "---"); > > \} > > \} > > > > > > public static void main(String\[\] str) \{ > > int\[\] array = \{ 12, 76, 35, 22, 16, 48, 90, 46, 9, 40 \}; > > BinaryTree root = new BinaryTree(array\[0\]); // 创建二叉树 > > for (int i = 1; i < array.length; i++) \{ > > root.insert(root, array\[i\]); // 向二叉树中插入数据 > > \} > > System.out.println("先根遍历:"); > > preOrder(root); > > System.out.println(); > > System.out.println("中根遍历:"); > > inOrder(root); > > System.out.println(); > > System.out.println("后根遍历:"); > > postOrder(root); > > \} > > \} > > > > > > 创建好的二叉树图形如下: > > ![Center][] > > > > > > 当运行上面的程序后结果如下: > > > > 先根遍历: > > 12-9-76-35-22-16-48-46-40-90- > > 中根遍历: > > 9--12--16--22--35--40--46--48--76--90-- > > 后根遍历: > > 9---16---22---40---46---48---35---90---76---12--- > > [0_13166086420zyt.gif]: https://image.dandelioncloud.cn/pgy_files/images/2024/01/29/7ba5cbbfc7374b7c972aa85b245a5714.png [Center]: https://image.dandelioncloud.cn/pgy_files/images/2024/01/29/7815fd9b969545c7a44ca9fc3e73b27f.png
相关 二叉树 二叉树遍历 通过二叉树遍历求得二叉树 什么是二叉树 > > 二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且 偏执的太偏执、/ 2022年12月04日 01:08/ 0 赞/ 302 阅读
相关 遍历二叉树 1. 二叉树的遍历 遍历定义 ——顺着某一条搜索路径巡访二叉树中的结点,使得 每个结点均被访问一次,而且仅被访问一次。 “访问”的含义可以很广,如:输出结点的信息等。 迈不过友情╰/ 2022年08月22日 14:26/ 0 赞/ 438 阅读
相关 遍历二叉树 遍历二叉树 二叉树是由3个基本单元组成的:根结点、左子树和右子树。 若限定先左后右的顺序,则遍历二叉树只有三种情况分别称为先(根)序遍历、中(根)序遍历和后(根)序遍 比眉伴天荒/ 2022年06月08日 00:48/ 0 赞/ 300 阅读
相关 遍历二叉树 遍历二叉树 今天我们学习了二叉树,现在我就基于二叉树的递归定义来说一说遍历二叉树的三种方法:先序、中序和后序。 根据二叉树的递归定义可知,二叉树是由3个基本单元组成:根结点 傷城~/ 2022年06月05日 08:11/ 0 赞/ 350 阅读
相关 二叉树遍历 include<iostream> include<queue> using namespace std; //二叉树结点 ╰+攻爆jí腚メ/ 2022年06月04日 05:35/ 0 赞/ 298 阅读
相关 二叉树遍历 前序遍历(左中右)ABDGHCEIF ![前序遍历][70] 中序遍历(左根右)GDHBAEICF![中序遍历][70 1] 后序遍历(左右根)GHDBIEFCA![ Bertha 。/ 2022年05月11日 13:48/ 0 赞/ 359 阅读
相关 二叉树遍历 二叉树:二叉树是每个节点最多有两个子树的树结构。 本文介绍二叉树的遍历相关知识。 我们学过的基本遍历方法,无非那么几个:前序,中序,后序,还有按层遍历等等。 设L、D、R 痛定思痛。/ 2022年05月10日 06:24/ 0 赞/ 234 阅读
相关 二叉树遍历 二叉树是数据结构中很重要的一个章节,很多同学反应很难,今天我就把我平时的经验给大家讲解一下,今天讲一下二叉树的遍历 工具/原料 ● 数据结构知识 ● 了解树的定义 爱被打了一巴掌/ 2022年05月10日 03:08/ 0 赞/ 316 阅读
相关 遍历二叉树 用递归的方法实现前序遍历,中序遍历,后序遍历: 用递归的方法遍历的时候,其实每个节点都遍历了三遍,根据打印时间的不同,即可实现前序中序及后续,这就是三个遍历代码一样而打印顺序 浅浅的花香味﹌/ 2021年11月01日 15:28/ 0 赞/ 464 阅读
还没有评论,来说两句吧...