513. 找树左下角的值

513. 找树左下角的值

题目链接:513. 找树左下角的值(中等)

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

示例 1:

   

输入: root = [2,1,3]
输出: 1

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

题解

思路

该题采用层次遍历最简单。定义一个值,将每一层的第一个节点的值都赋值给它,这样最后得到的就是最底层最左边节点的值。

代码(C++)

//层次遍历
class Solution {
public:
    int findBottomLeftValue(TreeNode* root) {
        queue<TreeNode*> queNode;
        if (root != nullptr) queNode.push(root);
        int result = root->val;
        while (!queNode.empty()) {
            int size = queNode.size();
            TreeNode* node = queNode.front();
            result = node->val;
            for (int i = 0; i < size; i++) {
                node = queNode.front();
                queNode.pop();
                if (node->left) queNode.push(node->left);
                if (node->right) queNode.push(node->right);
            }
        }
        return result;
    }
};

代码(JavaScript)

/**
 * @param {TreeNode} root
 * @return {number}
 */
var findBottomLeftValue = function(root) {
    let queNode = [];
    if (root != null) queNode.push(root);
    var result = root.val;
    while (queNode.length != 0) {
        var size = queNode.length;
        for (var i = 0; i < size; i++) {
            node = queNode.shift();
            if (i == 0) result = node.val;
            if (node.left) queNode.push(node.left);
            if (node.right) queNode.push(node.right);
        }
    }
    return result;
};

 

 

 

 

posted @ 2021-12-09 09:53  wltree  阅读(24)  评论(0编辑  收藏  举报