import com.sun.source.tree.Tree;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class QueenTree {
public static class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(){}
TreeNode(int val){this.val=val;}
TreeNode(int val, TreeNode left,TreeNode right){
this.val=val;
this.left=left;
this.right=right;
}
}
public static void main(String[] args) {
List<Integer> result=new ArrayList<>();
TreeNode root=new TreeNode(1);
root.left=new TreeNode(2);
root.right=new TreeNode(3);
root.left.left=new TreeNode(4);
root.left.right=new TreeNode(5);
root.right.left=new TreeNode(6);
root.right.right=new TreeNode(7);
result=queueTree(root);
result.forEach(i->{
System.out.print(i+" ");
});
System.out.println();
selfTree(root,0);
reresult.forEach(integers -> {
integers.forEach(a->{
System.out.printf(a+" ");
});
System.out.println();
});
}
public static List<Integer> result=new ArrayList<>();
public static List<List<Integer>> reresult=new ArrayList<>();
//层序遍历
//1.队列实现
public static List<Integer> queueTree(TreeNode root){
Queue<TreeNode> queue=new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
TreeNode cur=queue.poll();
result.add(cur.val);
if(cur.left!=null){
queue.add(cur.left);
}
if(cur.right!=null){
queue.add(cur.right);
}
}
return result;
}
//2.递归实现
public static void selfTree(TreeNode root,int deep){
if(root==null)return;
deep++;
if(reresult.size()<deep){
List<Integer> temp=new ArrayList<>();
reresult.add(temp);
}
reresult.get(deep-1).add(root.val);
selfTree(root.left,deep);
selfTree(root.right, deep);
}
}
二叉树的层序遍历
最新推荐文章于 2024-10-10 09:56:47 发布