leetcode 513 Find Bottom Left Tree Value C++

来源:互联网 发布:程序员培训机构 编辑:程序博客网 时间:2024/05/02 04:34

一次AC,用的层次遍历,遍历一层的时候记录第一个node

    int findBottomLeftValue(TreeNode* root) {        queue<TreeNode *>que;        que.push(root);        TreeNode *leftNode = NULL;        int horizinal = 1;        int tmpHorizinal = 0;        int sum = 0;        while(!que.empty()) {            TreeNode *node = que.front();            sum++;            que.pop();            if (sum == 1) {                leftNode = node;            }            if(node->left) {                que.push(node->left);                tmpHorizinal++;            }            if(node->right) {                que.push(node->right);                tmpHorizinal++;            }            if (sum == horizinal) {                horizinal = tmpHorizinal;                tmpHorizinal = 0;                sum = 0;            }        }        return leftNode->val;    }
后来看了discuss,发现这么写更好,思路是一样的。

    int findBottomLeftValue(TreeNode* root) {        queue<TreeNode *>que;        que.push(root);        TreeNode *leftNode = NULL;        while(!que.empty()) {            int size = que.size();            leftNode = que.front();            while(size--) {                TreeNode *node = que.front();                que.pop();                if(node->left) que.push(node->left);                if(node->right) que.push(node->right);            }        }        return leftNode->val;    }



0 0
原创粉丝点击