leetcode0513. 找树左下角的值-meidum
1 题目:找树左下角的值
官方标定难度:中
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
提示:
二叉树的节点个数的范围是 [ 1 , 10 4 ] [1,10^4] [1,104]
− 2 31 < = N o d e . v a l < = 2 31 − 1 -2^{31} <= Node.val <= 2^{31} - 1 −231<=Node.val<=231−1
2 solution
深度优先搜索,先左后右,如果当前节点层数大于记录的层数,修改层数和值
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {int ans = 0, level = 0;void dfs(TreeNode *root, int l) {if(!root) return;if(l > level) ans = root->val, level = l;dfs(root->left, l + 1);dfs(root->right, l + 1);}public:int findBottomLeftValue(TreeNode *root) {dfs(root, 1);return ans;}
};