75 BFS和DFS解二叉树的层序遍历II

发布时间:2023年12月29日

问题描述:给定一个二叉树,返回其节点值至底而上的层序遍历,即按从叶子节点躲在层到根节点。

bfs求解:一层一层的遍历很适合用于bfs遍历;

public List<List<Integer>>layer(TreeNode root)
{
List<List<Integer>> res=new?List<List<Integer>>();
Queue<Integer>queue=new LinkedList<>();
queue.add(root.val);
while(!queue.isEmpty())
{
int queueSize=queue.size();
List<Integer>list=new LinkedList<>();
for(int i=0;i<queueSize;i++)
{
TreeNode tempNode=queue.poll();
list.add(tempNode.val);
if(tempNode.left!=null)
queue.add(tempNode.left);
if(tempNode.right!=null)
queue.add(tempnode.right);
}
res.add(0,list);
}
return res;
}

dfs求解:每遍历到一层,若当前没有遍历过的层次,则在List<List<Integer>>res中再插入一个List<Integer>,否则插入res中的指定位置。

public void layer(TreeNode root ,List<List<Integer>> res,int level)
{
if(root==null){return;}
if(level<=res.size())
{
res.get(res.size()-level).add(root.val);
layer(root.left,res,level+1);
leyer(root.right,res,level+1);
}else
{
res.add(0,new LinkedList<Integer>());
res.get(0).add(root.val);
layer(root.left,res,level+1);
leyer(root.right,res,level+1);
}
}
public?List<List<Integer>>Layer(TreeNode root)
{
List<List<Integer>> res=new?List<List<Integer>>();
layer(root,res,0);
???????return res;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135289564
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。