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

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

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]]   BFS思路:层序遍历用队列的先进先出来实现。最开始的想法是想在一个队列中通过统计某层得节点个数来完成把每一层存储到vector中,发现搞不出来。后来看到有人的代码用两个队列来实现~确实是个好办法。   pre队列装上一层得节点,然后把pre中节点的左右孩子全部放到cur中,放一次,就把pre中节点存储在temp中,然后从pre中pop,当pre为空时,那么就把temp放到结果res中,然后清空temp准备存储下一层,最后把cur赋给pre,清空cur。进而重复上面的步骤。
/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    void qClear(queue
& a) { while (!a.empty()) { a.pop(); } } vector
> levelOrder(TreeNode *root) { vector
> res; vector
temp; if(root==NULL) return res; queue
pre,cur; pre.push(root); do { TreeNode* node=pre.front(); if(node->left!=NULL){ cur.push(node->left); } if(node->right!=NULL){ cur.push(node->right); } temp.push_back(pre.front()->val); pre.pop(); if(pre.empty()){ //pre中所有节点清空 res.push_back(temp); temp.clear(); pre=cur; qClear(cur); } }while (!pre.empty()); return res; }};

 

DFS(转载,):

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {private:    vector
> ret;public: void solve(int dep, TreeNode *root) { if (root == NULL) return; if (ret.size() > dep) { ret[dep].push_back(root->val); } else { vector
a; a.push_back(root->val); ret.push_back(a); } solve(dep + 1, root->left); solve(dep + 1, root->right); } vector
> levelOrder(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function ret.clear(); solve(0, root); return ret; }};

 

转载于:https://www.cnblogs.com/fightformylife/p/4078200.html

你可能感兴趣的文章
ethereumjs/ethereumjs-blockchain-2-test
查看>>
centos7安装登录图形界面
查看>>
Css布局系列-float 浮动
查看>>
lowbit
查看>>
【总结】四月份找实习总结
查看>>
【JS】Intermediate7:jQuery:DOM API
查看>>
iphone-common-codes-ccteam源代码 CCUIApplication.h
查看>>
10,object类
查看>>
团队第一次作业
查看>>
Kooboo CMS 无聊随笔(2)
查看>>
static 和 global
查看>>
Ubuntu12.04安装及环境配置总结
查看>>
费马小定理,欧拉函数
查看>>
浮点型数据的比较
查看>>
json相关
查看>>
MpVue开发之框架的搭建
查看>>
js之放大镜效果
查看>>
Cocos2d之Node类详解之节点树(一)
查看>>
023-请你说一说你知道的自动化测试框架
查看>>
response (响应对象)
查看>>