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

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

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

public List>layer(TreeNode root)
{
List> res=new List>();
Queuequeue=new LinkedList<>();
queue.add(root.val);
while(!queue.isEmpty())
{
int queueSize=queue.size();
Listlist=new LinkedList<>();
for(int i=0;i

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

public void layer(TreeNode root ,List> 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());
res.get(0).add(root.val);
layer(root.left,res,level+1);
leyer(root.right,res,level+1);
}
}
public List>Layer(TreeNode root)
{
List> res=new List>();
layer(root,res,0);
​​​​​​​return res;
}

你可能感兴趣的:(JAVA刷题500道,宽度优先,深度优先,算法,数据结构,java)