博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Binary Tree Level Order Traversal
阅读量:4150 次
发布时间:2019-05-25

本文共 2510 字,大约阅读时间需要 8 分钟。

struct TreeNode {	int val;	TreeNode *left;	TreeNode *right;	TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {	//BFS is always work for the level order traverse of a tree	//all we need is add some additional information, to solve the specific problem of level order typepublic:	vector
> LevelOrder_BFS(TreeNode* root) { vector
> ans; if(!root)//put the null tree judge here will be more neet return ans; queue
> q; int stepNow = 0; q.push(make_pair(root, stepNow)); vector
curLevel; while(!q.empty()) { TreeNode* curNode = q.front().first; int curStep = q.front().second; q.pop(); if(curStep != stepNow) { ans.push_back(curLevel); curLevel.clear(); stepNow = curStep; } curLevel.push_back(curNode->val); if(curNode->left) q.push(make_pair(curNode->left, curStep+1)); if(curNode->right) q.push(make_pair(curNode->right, curStep+1)); } ans.push_back(curLevel);//note: we should remember the last level here return ans; } vector
> levelOrder(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function return LevelOrder_BFS(root); }};

second time

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    struct Node    {        TreeNode* treeNode;        int level;        Node(TreeNode* _treeNode = NULL, int _level = 0):treeNode(_treeNode), level(_level){};    };    vector
> levelOrder(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL) return vector
>(); queue
nodeQ; nodeQ.push(Node(root, 1)); int prevLevel = 0; vector
curLevelAns; vector
> allLevelAns; while(!nodeQ.empty()) { TreeNode* curNode = nodeQ.front().treeNode; int curLevel = nodeQ.front().level; nodeQ.pop(); if(curNode == NULL) continue; if(curLevel != prevLevel) { if(prevLevel != 0) allLevelAns.push_back(curLevelAns); curLevelAns.clear(); } prevLevel = curLevel; curLevelAns.push_back(curNode->val); nodeQ.push(Node(curNode->left, curLevel+1)); nodeQ.push(Node(curNode->right, curLevel+1)); } allLevelAns.push_back(curLevelAns); return allLevelAns; }};

转载地址:http://boxti.baihongyu.com/

你可能感兴趣的文章
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>
Qt文件夹选择对话框
查看>>
DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
查看>>
DeepLearning tutorial(6)易用的深度学习框架Keras简介
查看>>
DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
查看>>
流形学习-高维数据的降维与可视化
查看>>
Python-OpenCV人脸检测(代码)
查看>>
python+opencv之视频人脸识别
查看>>
人脸识别(OpenCV+Python)
查看>>
6个强大的AngularJS扩展应用
查看>>
网站用户登录系统设计——jsGen实现版
查看>>