class Solution {
public int[] levelOrder(TreeNode root) {
// 层序遍历
if (root==null)
return new int[0];
int[] res = new int[1000];
int count = 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode pop = queue.poll();
res[count++] = pop.val;
if (pop.left!=null) {
queue.offer(pop.left);
}
if (pop.right!=null) {
queue.offer(pop.right);
}
}
int[] ans = new int[count];
for (int i = 0; i < count; i++) {
ans[i] = res[i];
}
return ans;
}
}
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode 层序遍历
* }
*/
func levelOrder(root *TreeNode) []int {
var ans []int
if(root == nil){
return ans
}
var queue = list.New()
queue.PushBack(root)
for queue.Len()!=0 {
var node *TreeNode = queue.Front().Value.(*TreeNode)
queue.Remove(queue.Front())
ans = append(ans,node.Val)
if node.Left != nil {
queue.PushBack(node.Left)
}
if node.Right != nil {
queue.PushBack(node.Right)
}
}
return ans
}
class Solution {
public int[] levelOrder(TreeNode root) {
Deque deque = new ArrayDeque<>();
if(root == null) return new int[0];
List list = new ArrayList<>();
deque.addLast(root);
while(!deque.isEmpty()) {
int size = deque.size();
for(int i = 0; i < size; i ++) {
TreeNode node = deque.removeFirst();
list.add(node.val);
if(node.left != null) deque.addLast(node.left);
if(node.right != null) deque.addLast(node.right);
}
}
int[] res = new int[list.size()];
for(int i = 0; i < list.size(); i ++) {
res[i] = list.get(i);
}
return res;
}
}
八
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int[] levelOrder(TreeNode root) {
if (root null) return new int[0];
Queue queue = new LinkedList<>() {{ add(root); }};
ArrayList ans = new ArrayList<>();
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
ans.add(node.val);
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
int[] res = new int[ans.size()];
for (int i = 0; i < ans.size(); i++)
res[i] = ans.get(i);
return res;
}
}
共以下 31 个回答
通过
ts
####先序遍历
层序遍历
时间复杂度:O(n)
空间复杂度:O(n)
时间空间复杂度:O(n)
/*
* 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution { levelOrder(TreeNode* root) { ans;
public:
vector
if(root nullptr) return {};
vector
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
auto node = q.front();
q.pop();
ans.push_back(node->val);
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
return ans;
}
};
使用队列完成树的层次遍历 invector; levelOrder(TreeNode root)
class Solution {
vector
queue<TreeNode> Inqueue;
public:
vector
{
if(!root) return invector;
Inqueue.push(root);
while(Inqueue.size())
{
};
public int[] levelOrder(TreeNode root) { queue=new LinkedList (); list =new ArrayList ();
//层序遍历 使用队列
Queue
List
if(rootnull)
return new int[0];
}
时间复杂度O(n),空间复杂度O(n)
“`c++ levelOrder(TreeNode* root) { s; q;
//时间复杂度O(n)
//空间复杂度O(n)
class Solution {
public:
vector
vector
if(root==NULL) return s;
queue
if(root) q.push(root);
while(!q.empty())
{
TreeNode *tmp = q.front();
s.push_back(tmp->val);
q.pop();
if(tmp->left) q.push(tmp->left);
if(tmp->right) q.push(tmp->right);
}
return s;
}
};
代码
TS做法
时间:O(n)
空间:O(n)
Day8:下面是代码
”’java queue = new ArrayDeque<>(); list = new ArrayList<>();
class Solution {
public int[] levelOrder(TreeNode root) {
if(root null){
return new int[0];
}
Queue
List
queue.add(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
list.add(node.val);
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
}
”’
时间复杂度O(n)
空间复杂度O(n)
思路
因为要层序遍历,所以就不好采用递归的方法来实现。所以借用
queue来实现层序遍历。首先将root节点放入queue中,然后当queue不为空时进行循环。其中首先记录queue的顶部的数值,然后放到ans中输出。然后判断当前头节点的左右子节点是否为空,如果不为空就放入queue中。直到queue成为一个空队列,说明遍历结束,输出ans数组。
代码
“`cpp levelOrder(TreeNode* root) { ans; que;
class Solution {
public:
vector
vector
if(root == NULL){
return ans;
}
queue
que.push(root);
while(!que.empty()){
TreeNode* temp = que.front();
ans.push_back(temp->val);
if(temp->left) que.push(temp->left);
if(temp->right) que.push(temp->right);
que.pop();
}
return ans;
}
};
时间复杂度:O(n)
空间复杂度:O(n)
时间复杂度O(n) 空间复杂度O(n)
八 queue = new LinkedList<>() {{ add(root); }}; ans = new ArrayList<>();
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int[] levelOrder(TreeNode root) {
if (root null) return new int[0];
Queue
ArrayList
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
ans.add(node.val);
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
int[] res = new int[ans.size()];
for (int i = 0; i < ans.size(); i++)
res[i] = ans.get(i);
return res;
}
}
层序遍历 空间复杂度O(n) 时间复杂度O(n)