利用bds和dfs解决 LeetCode 107. Binary Tree Level Order Traversal II
生活随笔
收集整理的這篇文章主要介紹了
利用bds和dfs解决 LeetCode 107. Binary Tree Level Order Traversal II
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題簡述
給定一棵二叉樹,返回該二叉樹自底向上遍歷的結(jié)點值(即從左到右,自底向上)
比如給定一顆二叉樹 [3,9,20,null,null,15,7]
返回的結(jié)果為
[[15,7],[9,20],[3] ]解決方案
解法1:廣度優(yōu)先遍歷(BFS)
最簡單的想法就是先廣度優(yōu)先遍歷,按層存值,最后倒一下~
直接上代碼
解法2:深度優(yōu)先遍歷(DFS)
另一種做法是,一邊深度遍歷,一邊按照層數(shù)記錄數(shù)據(jù)
/*** 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 { private:vector<vector<int>> res;private:void _dfs(TreeNode* root, int layer){if (!root)return;if (layer >= res.size()){res.insert(res.begin(), vector<int>());}res[res.size() - layer - 1].push_back(root->val);_dfs(root->left, layer + 1);_dfs(root->right, layer + 1);}public:vector<vector<int>> levelOrderBottom(TreeNode* root) {res.clear();if (!root)return res;_dfs(root, 0);return res;} };總結(jié)
以上是生活随笔為你收集整理的利用bds和dfs解决 LeetCode 107. Binary Tree Level Order Traversal II的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 使用 asyncio 包处
- 下一篇: LeetCode LCS 03. 主题空