↓ 跳过正文
  1. Posts/

leetcode 107 Binary Tree Level Order Traversal II(最底层往上依次输出二叉树每一个node的val)

·474 字·1 分钟

最近要准备面试…虽然leetcode的题目难度比较水..不过白板写代码还是要练下的。。。我所理解的白板写代码。。。大概就是。。。用记事本。。一遍写对代码的能力吧。。。所以我来记录一下。。思路想错的或者没有秒的题目。

(因为题目描述傻逼/数据范围故意坑人/leetcode抽风 / 我自己犯傻逼 等原因 没有一次通过的题目不在记录之列)

leetcode107

题意:给一棵二叉树,从最底层往上依次输出每一个node的val..

思路:一开始以为同一层的一定会在相邻时间内访问。。。后来发现的确是蠢了。。。

因此dfs的时候加了一个level域。。。每次dfs的时候先左后右就好了。。。

注意记得判断root为空的情况。。。

代码实现
 1/* ***********************************************
 2Author :111qqz
 3Created Time :2017年02月20日 星期一 19时21分51秒
 4File Name :107.cpp
 5************************************************ */
 6/**
 7
 8 * Definition for a binary tree node.
 9
10 * struct TreeNode {
11
12 *     int val;
13
14 *     TreeNode *left;
15
16 *     TreeNode *right;
17
18 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
19
20 * };
21
22 */
23
24class Solution {
25
26public:
27
28    vector<vector<int>>res;
29    vector<int>tmp[1500];
30    int mx_level = 0 ;
31    void dfs( TreeNode* root,int level)
32    {
33//  cout<<"level:"<<level<<endl;
34    mx_level = max(mx_level,level);
35    if (root->left!=NULL)
36    {
37        tmp[level].push_back(root->left->val);
38        dfs(root->left,level+1);
39    }
40    if (root->right!=NULL)
41    {
42        tmp[level].push_back(root->right->val);
43        dfs(root->right,level+1);
44    }
45    }
46    vector<vector<int>> levelOrderBottom(TreeNode* root) {
47    if (root==NULL) return res;
48        tmp[0].push_back(root->val);
49        dfs(root,1);
50        for ( int i = mx_level;  i>= 0 ; i--)if (!tmp[i].empty()) res.push_back(tmp[i]);
51    return res;
52    }
53
54};

相关文章

BZOJ 1800: [Ahoi2009]fly 飞行棋 (尺取+数学)

·693 字·2 分钟
1800: [Ahoi2009]fly 飞行棋 # Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1530 Solved: 1220 [Submit][Status][Discuss] Description # 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。

BZOJ 1207: [HNOI2004]打鼹鼠 (LIS)

·965 字·2 分钟
1207: [HNOI2004]打鼹鼠 # Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2854 Solved: 1390 [Submit][Status][Discuss] Description # 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个nn的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四个网格,机器人不能走出整个nn的网格。游戏开始时,你可以自由选定机器人的初始位置。现在你知道在一段时间内,鼹鼠出现的时间和地点,希望你编写一个程序使机器人在这一段时间内打死尽可能多的鼹鼠。

codeforces #382 div 2 E. Ostap and Tree (树形dp)

·698 字·2 分钟
题目链接 题意:将一棵树的若干点染成黑色,要求满足对于任何一个点u,至少存在一个距离其k以内的点v被染成黑色,问染色方案数。 思路:还没完全搞懂。。。记录一些idea…

hdu 1520 Anniversary party (树形dp模板题)

·610 字·2 分钟
题目链接 题意:一个舞会,每个人有一个val,给出n个人之间的领导和被领导关系,一个人不愿意与他的领导同时参加,问一种安排方案,使得参加的人的val和最大,问这个最大的和是多少。