要求
- 时间限制:1秒
- 空间限制:32768K
- 热度指数:284958
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路
利用一个队列进行二叉树的层次遍历。
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
res = []
if not root:
return res
queue = []
queue.append(root)
while len(queue)>0:
temp = queue.pop(0)
res.append(temp.val)
if temp.left:
queue.append(temp.left)
if temp.right:
queue.append(temp.right)
return res
-
运行时间:29ms
-
占用内存:5740k
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> nodes;
if (!root)
return nodes;
queue<TreeNode*> qu;
qu.push(root);
TreeNode* temp;
while (qu.size()){
temp = qu.front();
nodes.push_back(temp->val);
qu.pop();
if (temp->left) qu.push(temp->left);
if (temp->right) qu.push(temp->right);
}
return nodes;
}
};
-
运行时间:4ms
-
占用内存:492k