一、题目描述:513. 找树左下角的值(中等)
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/ \
1 3输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7输出:
7来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题思路
方法一、层序遍历,找到每层最左边的节点
方法二、前序遍历,记录每层第一个值,记录level最高的第一个值。
方法二、中序遍历,记录每层第一个值,记录level最高的第一个值。
三、代码
方法二、
/**
* 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:
int findBottomLeftValue(TreeNode* root) {
int max_level = 0;
int left_num = 0;
findBottomLeftValue(root,max_level,1,left_num);
return left_num;
}
void findBottomLeftValue(TreeNode* root,int & max_level,int level_now, int & left_num)
{
if(root == NULL)
return;
if(max_level < level_now)
{
left_num = root->val;
max_level = level_now;
}
findBottomLeftValue(root->left,max_level,level_now + 1,left_num);
findBottomLeftValue(root->right,max_level,level_now + 1,left_num);
}
};