栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二叉树的四种遍历---先序、中序、后序遍历、广度优先遍历

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树的四种遍历---先序、中序、后序遍历、广度优先遍历

其中先序、中序、后续遍历都是 深度优先遍历

先序遍历:顺序输出:根结点->左节点->右节点 (用根节点不太准确 改为父节点可能更好 )

中序遍历:左节点->根节点->右结点 

后续遍历:左、右、根    根结点在哪就是什么遍历

以中序遍历为例(中序遍历输出的是一个升序排序 因为左孩子的值小嘛 父节点老二 右孩子的值最大)

 public void put(TreeNode node) {//中序遍历
	   if(node==null) {//可以不写 因为空的时候就不输出了
		   return;
	   }
	   if(node!=null) {
		   //System.out.print(node.value+", ");输出放前面就是前序遍历
		   put(node.left);
		   System.out.print(node.value+", ");//中序遍历
		   put(node.right);
		   //System.out.print(node.value+", ");//后续遍历
	   }
   }

很简单的 这是不加任何函数的时候 树的管理类 、需要什么操作 把 函数加进去就行

public class BianryTree {
   public TreeNode root; 
}

 广度优先遍历 需要导入一个 以链表形式存储的泛型队列 linkedList 的包

import java.util.linkedList;

广度优先遍历 就是把每一层的结点都输出 再去输出下一层,

借助了队列的先进先出来实现 核心思想就是 把结点压入栈 如果左右孩子不为空 压入栈  出栈 直到队列为空 

 public void Order() {//广度优先遍历 借助队列 jdk里面的含有的linkedList类
	   linkedList queue = new linkedList();
	   queue.add(root);//根节点入栈
	   TreeNode node;
	   while(!queue.isEmpty()) {
		   node=queue.pop();//对列最前面的元素出栈
		   System.out.print(node.value);
		   if(node.left!=null) {
			   queue.add(node.left);//左孩子入栈
		   }
		   if(node.right!=null) {
			   queue.add(node.right);//有孩子入栈
		   }
	   }
   }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号