# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def decorateRecord(self, root):
"""
:type root: Optional[TreeNode]
:rtype: List[int]
"""
if not root:
return []
res = []
queue = collections.deque()
queue.append(root)
while queue:
tmp = queue.popleft()
res.append(tmp.val)
if tmp.left:
queue.append(tmp.left)
if tmp.right:
queue.append(tmp.right)
return res
class Solution {
public int[] decorateRecord(TreeNode root) {
if(root null)
return new int[0];
List ans = new ArrayList<>();
Queue list = new LinkedList<>();
list.add(root);
while(!list.isEmpty()){
TreeNode temp = list.remove();
ans.add(temp.val);
if(temp.left!=null)
list.add(temp.left);
if(temp.right!=null)
list.add(temp.right);
}
int[] ansI = new int[ans.size()];
for(int i = 0; i < ans.size(); i++){
ansI[i] = ans.get(i);
}
return ansI;
func decorateRecord(root *TreeNode) []int {
var res []int
if root == nil { return res }
var que []*TreeNode
que = append(que, root)
for len(que) > 0 {
n := len(que)
for i := 0; i<n; i++ {
cur := que[i]
res = append(res, cur.Val)
if cur.Left != nil { que = append(que, cur.Left) }
if cur.Right != nil { que = append(que, cur.Right) }
}
que = que[n:]
}
return res
}
共以下 30 个回答
~~~java queue = new LinkedList<>(); ans = new ArrayList<>();
//就是使用层序遍历,BFS使用队列作为辅助
//int[]是没有函数直接添加元素的,所以要用ArrayList过渡一下
class Solution {
public int[] decorateRecord(TreeNode root) {
if(root null) return new int[0];
Queue
ArrayList
queue.add(root);
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;
}
}
java
层序遍历,需要一个辅助队列
class Solution { arr ; decorateRecord(TreeNode* root) { que;
public:
//层序遍历,辅助队列
vector
vector
if(root nullptr) return {};
queue
que.push(root);//根结点入队
while(!que.empty()){//队列非空
TreeNode *node = que.front();//队头结点出队
que.pop();
arr.push_back(node->val);//存到数组
if(node->left) que.push(node->left);//左孩子入队
if(node->right) que.push(node->right);//右孩子入队
}
return arr;
}
};
第n次打卡
day8第一题
时空复杂度O(n)
这题思路不难,就是很多琐碎的东西。其实这题可以分为4个大板块:判断特殊情况,初始化队列和列表,核心代码,返回结果
class Solution {
public int[] levelOrder(TreeNode root) {
if(root null){
return new int[0];
}
}
public int[] decorateRecord(TreeNode root) { q = new LinkedList<>(){{ add(root); }}; ans =new ArrayList<>();
if(root null) return new int[0];
Queue
ArrayList
while(!q.isEmpty()){
TreeNode node =q.poll();
ans.add(node.val);
if(node.left!=null) q.add(node.left);
if(node.right!=null) q.add(node.right);
}
int[] res=new int[ans.size()];
for(int i=0;i<ans.size();i++){
res[i]=ans.get(i);
}
return res;
思路:利用队列实现广度优先遍历
广度优先算法,层序遍历
class Solution { decorateRecord(TreeNode* root) { res; que;
public:
vector
vector
if(!root) return res;
queue
que.push(root);
while(!que.empty()){
TreeNode* node = que.front();
que.pop();
res.push_back(node->val);
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
return res;
}
};
打卡
从上到下打印二叉树java
java queue = new LinkedList<>(){{add(root);}}; ans = new ArrayList<>();
class Solution{
public int[] decorateRecord(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)
时间复杂度$O(n)$,额外空间复杂度: $O(n)$
时间复杂度:O(n)
额外空间复杂度: O(n)
层序遍历,时间复杂度和空间复杂度为O(n)
纯纯层序遍历
class Solution { decorateRecord(TreeNode* root) { res;
public:
vector
vector
queue<TreeNode*>que;
};
时间复杂度:O(N)
空间复杂度:O(N)
打卡
class Solution { decorateRecord(TreeNode* root) { ret;
public:
vector
if (root nullptr) return {};
vector
queue<TreeNode> q;
q.push(root);
while (!q.empty()){
TreeNode tmp = q.front();
ret.push_back(tmp->val);
q.pop();
if (tmp->left) q.push(tmp->left);
if (tmp->right) q.push(tmp->right);
}
return ret;
}
};时空复杂度O(N)
/** res = new ArrayList<>();
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int[] decorateRecord(TreeNode root) {
if(root null) return new int[0];
List
}
时空复杂度O(n)
class Solution { ans = new ArrayList<>(); list = new LinkedList<>();
public int[] decorateRecord(TreeNode root) {
if(root null)
return new int[0];
List
Queue
list.add(root);
while(!list.isEmpty()){
TreeNode temp = list.remove();
ans.add(temp.val);
if(temp.left!=null)
list.add(temp.left);
if(temp.right!=null)
list.add(temp.right);
}
int[] ansI = new int[ans.size()];
for(int i = 0; i < ans.size(); i++){
ansI[i] = ans.get(i);
}
return ansI;
}
时空复杂度均为On
时间复杂度O(n)
空间复杂度O(n)
“`C++ decorateRecord(TreeNode* root) result; tmp;
class Solution {
public:
vector
{
vector
if(root == nullptr)
{
return {};
}
queue
tmp.push(root);
while(tmp.empty() != true)
{
TreeNode* temp = tmp.front();
tmp.pop();
result.push_back(temp->val);
if(temp->left != nullptr)
{
tmp.push(temp->left);
}
if(temp->right != nullptr)
{
tmp.push(temp->right);
}
}
return result;
}
};
“`
/** decorateRecord(TreeNode root) { ans; cur = q.front();
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
vector
queue<TreeNode> q;
vector
if(!root) return ans;
q.push(root);
while(!q.empty()){
TreeNode
q.pop();
ans.push_back(cur->val);
if(cur->left != nullptr) q.push(cur->left);
if(cur->right != nullptr) q.push(cur->right);
}
};//时间复杂度O(n)空间复杂度O(n)
class Solution { queue=new LinkedList<>(); list_res=new ArrayList<>();
public int[] decorateRecord(TreeNode root) {
int[] res;
if(rootnull)
{
res=new int[0];
return res;
}
Queue
List
queue.offer(root);
while(!queue.isEmpty())
{
TreeNode node=queue.poll();
list_res.add(node.val);
if(node.left!=null)
queue.offer(node.left);
if(node.right!=null)
queue.offer(node.right);
}
res=new int[list_res.size()];
for(int i=0;i<list_res.size();i++)
{
res[i]=list_res.get(i);
}
return res;
}
}
层次遍历
思路:层序遍历