博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(树)输出或者存储二叉树中每一行的节点值
阅读量:5140 次
发布时间:2019-06-13

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

  • 题目:https://www.nowcoder.com/practice/d8566e765c8142b78438c133822b5118?tpId=46&tqId=29071&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking
  • 思路:
    • 这个题目的主要思路就是利用队列来进行解决。从顶部到尾部,对每一层将每一层的节点放入队列中,然后在这一层中将队列中的每个节点保存在一个vector中,并且判断这个节点是否有左右子节点,将他们放入队列(这样就将下一层的所有节点放入了队列中),依次处理每一层。然后将每一层的vector'放入二维数组中即可。
  • 代码
    /** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector
    > levelOrderBottom(TreeNode *root) { int depth = Depth(root); vector
    > bottom; if (root == NULL) return bottom; deque
    dq; dq.push_back(root); /* 这里是利用队列来进行存储每一行的节点,进队列出队列,主要思路就是利用当前的遍历到当前节点,就讲它的左右子节点 进入队列,然后再将这一个队列的当前行的元素进入vector中然后在进入二维数组中 */ while (!dq.empty()){ int low = 0; int high = dq.size();//计算当前队列中元素的个数,这个就是每一行的元素个数 vector
    tmp; while (low++ < high){ TreeNode *cur = dq.front(); dq.pop_front(); tmp.push_back(cur->val); if (cur->left) dq.push_back(cur->left); if (cur->right) dq.push_back(cur->right); } bottom.push_back(tmp); } reverse(bottom.begin(), bottom.end());//翻转函数,实现翻转 return bottom; } //计算树的深度函数 int Depth(TreeNode *root){ if (root == NULL) return 0; int left = left + Depth(root->left); int right = right + Depth(root->right); return left>right?left:right; }};

     

转载于:https://www.cnblogs.com/Kobe10/p/6341279.html

你可能感兴趣的文章
Tomcat Server之启动---Bootstrap类
查看>>
经典问题-生产者和消费者问题
查看>>
Hadoop Distributed File System 简介
查看>>
文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)...
查看>>
常用正则表达式
查看>>
队列的基本使用方法
查看>>
解题:USACO18FEB Taming the Herd
查看>>
ACM-括号匹配问题
查看>>
使用Python中的urlparse、urllib抓取和解析网页(一)(转)
查看>>
Linux_屏蔽360、scanv、QQ管家等IP扫描
查看>>
LeetCode 538. Convert BST to Greater Tree
查看>>
@JoinColumn
查看>>
恢复linux ext4分区上误删除的文件。
查看>>
大视野 1012: [JSOI2008]最大数maxnumber(线段树/ 树状数组/ 单调队列/ 单调栈/ rmq)...
查看>>
改变说明文档显示位置wrap
查看>>
团队作业(三):确定分工
查看>>
info.plist文件切换为Property list显示视图
查看>>
面向对象初识 ①①①
查看>>
How to install MVVM Light Toolkit via NuGet
查看>>
Activiti学习笔记
查看>>