(LeetCode 515)在每個樹行中找最大值 [簡單DFS]
阿新 • • 發佈:2019-01-01
515. 在每個樹行中找最大值
您需要在二叉樹的每一行中找到最大的值。
示例:
輸入:
1
/ \
3 2
/ \ \
5 3 9
輸出: [1, 3, 9]
分析:
在進行dfs遍歷的時候,記錄當前節點所在的深度,相同深度中保留最大值即可。
AC程式碼:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void dfs(TreeNode* c, int d,vector<int>& ans) { if(c == NULL) return; if(d >= ans.size()) ans.push_back(c->val); else { ans[d] = max(ans[d],c->val); } dfs(c->left,d+1,ans); dfs(c->right,d+1,ans); } vector<int> largestValues(TreeNode* root) { vector<int> ans; dfs(root,0,ans); return ans; } };