本题使用层序遍历再合适不过了,比递归要好理解得多!
只需要记录最后一行第一个节点的数值就可以了。
#define MAX_NUM 10000
int findBottomLeftValue(struct TreeNode *root){
if(root==NULL){
return -1;
}
int ret;
struct TreeNode *queue[MAX_NUM];
int head=0;
int tail=0;
queue[tail++]=root;
while(head!=tail){
int last=tail;
int len=tail-head;
int i;
for(i=0;i<len;i++){
struct TreeNode *cur = queue[head++];
if(i==0){
ret=cur->val;
}
if(cur->left!=NULL){
queue[tail++]=cur->left;
}
if (cur->right != NULL) {
queue[tail++] = cur->right;
}
}
}
return ret;
}