题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路:
使用递归的思想,每层节点值放入ArrayList,不断每层遍历,得到结果。
代码(java):
import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> res=new ArrayList<Integer>();
if(root==null)return res;
res.add(root.val);
levelOrderTravel(root.left,root.right,res);
return res;
}
public void levelOrderTravel(TreeNode left,TreeNode right,ArrayList<Integer>res){
if(left!=null && right!=null){
res.add(left.val);
res.add(right.val);
levelOrderTravel(left.left,left.right,res);
levelOrderTravel(right.left,right.right,res);
}
else if(left!=null){
res.add(left.val);
levelOrderTravel(left.left,left.right,res);
}
else if(right!=null){
res.add(right.val);
levelOrderTravel(right.left,right.right,res);
}
else{
return;
}
}
}