给定一个二叉树的 根节点 root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入: [1,2,3,null,5,null,4] 输出: [1,3,4]
|
示例 2:
示例 3:
提示:
- 二叉树的节点个数的范围是
[0,100]
-100 <= Node.val <= 100
C++
class Solution { public: vector<int> res; queue<TreeNode*> q; vector<int> rightSideView(TreeNode* root) { if(!root) return {}; bfs(root); return res; } void bfs(TreeNode* root){ q.push(root); while(!q.empty()){ int len = q.size(); res.push_back(q.back()->val); for(int i = 0; i < len; i++){ TreeNode* temp = q.front(); q.pop(); if(temp -> left) q.push(temp -> left); if(temp -> right) q.push(temp -> right); } } } };
|
给定一个二叉树的 根节点 root
,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7
|
提示:
- 二叉树的节点个数的范围是
[1,104]
-231 <= Node.val <= 231 - 1
C++
class Solution { public: TreeNode* res = nullptr; TreeNode* temp = nullptr; queue<TreeNode*> q; int findBottomLeftValue(TreeNode* root) { bfs(root); return res -> val; } void bfs(TreeNode* root){ q.push(root); while(!q.empty()){ int len = q.size(); res = q.front(); for(int i = 0; i < len; i ++){ temp = q.front(); q.pop(); if(temp -> left) q.push(temp -> left); if(temp -> right) q.push(temp -> right); } } } };
|