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

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

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

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

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

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

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

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

 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);//有孩子入栈
		   }
	   }
   }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5693177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存