本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

LeetCode:Binary Tree Level Order Traversal I II

LeetCode:Binary Tree Level Order Traversal 

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

 

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]                                                                      本文地址

队列辅助层序遍历,队列中插入NULL作为层与层之间的间隔,注意处理队列里最后的NULL时,不能再把它入队列以免形成死循环

复制代码
 1 /**
 2  * Definition for binary tree
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<vector<int> > levelOrder(TreeNode *root) {
13         // IMPORTANT: Please reset any member data you declared, as
14         // the same Solution instance will be reused for each test case.
15         vector<vector<int> >res;
16         if(root == NULL)return res;
17         queue<TreeNode*> myqueue;
18         myqueue.push(root);
19         myqueue.push(NULL);//NULL是层与层之间间隔标志
20         vector<int> level;
21         while(myqueue.empty() == false)
22         {
23             TreeNode *p = myqueue.front();
24             myqueue.pop();
25             if(p != NULL)
26             {
27                 level.push_back(p->val);
28                 if(p->left)myqueue.push(p->left);
29                 if(p->right)myqueue.push(p->right);
30             }
31             else
32             {
33                 res.push_back(level);
34                 if(myqueue.empty() == false)
35                 {
36                     level.clear();
37                     myqueue.push(NULL);
38                 }
39             }
40         }
41         return res;
42     }
43 };
复制代码

 


LeetCode:Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

 

return its bottom-up level order traversal as:

[
  [15,7]
  [9,20],
  [3],
]

和上一题差不多,只是需要把最后遍历结果数组翻转一下

复制代码
 1 /**
 2  * Definition for binary tree
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<vector<int> > levelOrderBottom(TreeNode *root) {
13         // IMPORTANT: Please reset any member data you declared, as
14         // the same Solution instance will be reused for each test case.
15         vector<vector<int> >res;
16         if(root == NULL)return res;
17         queue<TreeNode*> myqueue;
18         myqueue.push(root);
19         myqueue.push(NULL);//NULL是层与层之间间隔标志
20         vector<int> level;
21         while(myqueue.empty() == false)
22         {
23             TreeNode *p = myqueue.front();
24             myqueue.pop();
25             if(p != NULL)
26             {
27                 level.push_back(p->val);
28                 if(p->left)myqueue.push(p->left);
29                 if(p->right)myqueue.push(p->right);
30             }
31             else
32             {
33                 res.push_back(level);
34                 if(myqueue.empty() == false)
35                 {
36                     level.clear();
37                     myqueue.push(NULL);
38                 }
39             }
40         }
41         reverse(res.begin(), res.end());
42         return res;
43     }
44 };
复制代码

【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3440542.html

posted @   tenos  阅读(3356)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异

本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

公益页面-寻找遗失儿童

点击右上角即可分享
微信分享提示