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

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

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

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

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

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

 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<E>类
	   LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
	   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);//有孩子入栈
		   }
	   }
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值