题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
C++
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> ret;
queue<struct TreeNode *> que;
que.push(root);
while (!que.empty()) {
auto now = que.front();
que.pop();
if (now == nullptr)
continue;
ret.push_back(now->val);
que.push(now->left);
que.push(now->right);
}
return ret;
}
};
Java
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;/**
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> list = new ArrayList<Integer>();
LinkedList queue = new LinkedList();
if(root == null){
return new ArrayList<Integer>();
}
TreeNode temp = root;
queue.add(temp);
while (!queue.isEmpty()){
temp = (TreeNode)queue.poll();
list.add(temp.val);
if(temp.left != null){
queue.add(temp.left);
}
if(temp.right != null){
queue.add(temp.right);
}
}
return list;
}
}
python
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
# write code here
if not root:
return []
tmp_array=[]
tmp_array.append(root)
result_array=[]
while len(tmp_array)>0:
cur_node=tmp_array.pop(0)
result_array.append(cur_node.val)
if cur_node.left:
tmp_array.append(cur_node.left)
if cur_node.right:
tmp_array.append(cur_node.right)
return result_array