博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树的深度优先遍历和广度优先遍历
阅读量:5863 次
发布时间:2019-06-19

本文共 2392 字,大约阅读时间需要 7 分钟。

1 import java.util.ArrayDeque;  2   3 public class BinaryTree {  4     static class TreeNode{  5         int value;  6         TreeNode left;  7         TreeNode right;  8   9         public TreeNode(int value){ 10             this.value=value; 11         } 12     } 13  14     TreeNode root; 15  16     public BinaryTree(int[] array){ 17         root=makeBinaryTreeByArray(array,1); 18     } 19  20     /** 21      * 采用递归的方式创建一颗二叉树 22      * 传入的是二叉树的数组表示法 23      * 构造后是二叉树的二叉链表表示法 24      */ 25     public static TreeNode makeBinaryTreeByArray(int[] array,int index){ 26         if(index
stack=new ArrayDeque
(); 50 stack.push(root); 51 while(stack.isEmpty()==false){ 52 TreeNode node=stack.pop(); 53 System.out.print(node.value+" "); 54 if(node.right!=null){ 55 stack.push(node.right); 56 } 57 if(node.left!=null){ 58 stack.push(node.left); 59 } 60 } 61 System.out.print("\n"); 62 } 63 64 /** 65 * 广度优先遍历 66 * 采用非递归实现 67 * 需要辅助数据结构:队列 68 */ 69 public void levelOrderTraversal(){ 70 if(root==null){ 71 System.out.println("empty tree"); 72 return; 73 } 74 ArrayDeque
queue=new ArrayDeque
(); 75 queue.add(root); 76 while(queue.isEmpty()==false){ 77 TreeNode node=queue.remove(); 78 System.out.print(node.value+" "); 79 if(node.left!=null){ 80 queue.add(node.left); 81 } 82 if(node.right!=null){ 83 queue.add(node.right); 84 } 85 } 86 System.out.print("\n"); 87 } 88 89 /** 90 * 13 91 * / \ 92 * 65 5 93 * / \ \ 94 * 97 25 37 95 * / /\ / 96 * 22 4 28 32 97 */ 98 public static void main(String[] args) { 99 int[] arr={0,13,65,5,97,25,0,37,22,0,4,28,0,0,32,0};100 BinaryTree tree=new BinaryTree(arr);101 tree.depthOrderTraversal();102 tree.levelOrderTraversal();103 }104 }

 

 

转载于:https://www.cnblogs.com/bug-butterfly/p/4038823.html

你可能感兴趣的文章
[有明信息]重视測算,精校成本源头 ——浅谈房地产开发目标成本測算
查看>>
三天学会HTML5 之第一天
查看>>
对自己寒假的安排
查看>>
CF 17B Hierarchy
查看>>
python Image PNG getpixel R/G/B/A
查看>>
nginx日志配置指令详解
查看>>
jpeg和gif已经影响互联网发展进程了,他们应该被历史淘汰了!!!
查看>>
高可用集群heartbeat全攻略
查看>>
浅谈触发器使用
查看>>
机器学习简史brief history of machine learning
查看>>
golang笔记——array
查看>>
JAVA编程思想(2) - 操作符(二)
查看>>
mysql安装前的系统准备工作(转)
查看>>
Zabbix监控
查看>>
[android] 手机卫士手势滑动切换屏幕
查看>>
memcached搭建缓存系统
查看>>
转 数据库中的 date datetime timestamp的区别
查看>>
C++中const简介及用法
查看>>
Linux:Ubuntu14.04离线安装scala(在线安装)
查看>>
SpringTest框架JUnit单元测试用例获取ApplicationContext实例的方法
查看>>