深度优先遍历和广度优先遍历_二叉树的深度优先和广度优先遍历

63978f312cf60d42fc676c11295820ad.png

importjava.util.*;public classbinaryTree {public static voidmain(String[] args) {
List<Integer> list=newArrayList<Integer>();//构造二叉树
TreeNode treeNode6=newTreeNode(2,null,null);
TreeNode treeNode5=newTreeNode(1,null,null);
TreeNode treeNode4=newTreeNode(7,null,null);
TreeNode treeNode3=newTreeNode(6,treeNode5,treeNode6);
TreeNode treeNode2=newTreeNode(5,treeNode4,null);
TreeNode root=newTreeNode(3,treeNode2,treeNode3);
list=DFS(root);
System.out.println("深度优先遍历:"+list);
list=BFS(root);
System.out.println("广度优先遍历:"+list);
}//深度优先遍历public staticList<Integer> DFS(TreeNode root){
Stack<TreeNode> stack=newStack<TreeNode>();
List<Integer> list=newArrayList<Integer>();if(root==null)returnlist;
stack.push(root);while(!stack.isEmpty()){
TreeNode t=stack.pop();if(t.right!=null){ stack.push(t.right); }if(t.left!=null){ stack.push(t.left); }
list.add(t.val);
}returnlist;
}//广度优先遍历public staticList<Integer> BFS(TreeNode root){
Queue<TreeNode> queue=newLinkedList<TreeNode>();
List<Integer> list=newArrayList<Integer>();if(root==null){returnlist;}
queue.add(root);while(!queue.isEmpty()){
TreeNode t=queue.remove();if(t.left!=null){ queue.add(t.left); }if(t.right!=null){ queue.add(t.right); }
list.add(t.val);
}returnlist;
}
}