Every day a leetcode
题目来源:513. 找树左下角的值
解法:层序遍历
二叉树的 最底层 最左边 节点是:层序遍历最后一层的第一个结点。
所以,对二叉树进行层序遍历,每访问一层,更新ans为该层第一个结点的值,最终ans即为所求。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
#define MAX_QUEUE_SIZE 10000
int findBottomLeftValue(struct TreeNode* root){
struct TreeNode* queue[MAX_QUEUE_SIZE];
struct TreeNode* node;
int in=0,out=0;
int ans;
queue[out++]=root;
while(in<out)
{
int levelSize=out-in;
for(int i=0;i<levelSize;i++)
{
node=queue[in++];
//该层第一个结点
if(i == 0) ans=node->val;
if(node->left) queue[out++]=node->left;
if(node->right) queue[out++]=node->right;
}
}
return ans;
}
结果: