[Leetcode 60 days with brush] day17 binary tree - 110. balanced binary tree, 257. all paths of binary tree, 404. sum of left leaves

 


  topic:

110. Balanced Binary Tree

Given a binary tree, determine whether it is a height-balanced binary tree.

In this question, a height balanced binary tree is defined as:

The absolute value of the height difference between the left and right subtrees  of each node in a binary tree does not exceed 1.

Example 1:

Input: root = [3,9,20,null,null,15,7]
 Output: true

Example 2:

Input: root = [1,2,2,3,3,null,null,4,4]
 Output: false

Example 3:

Input: root = []
 Output: true

hint:

  • The number of nodes in the tree is in the  [0, 5000] range
  • -104 <= Node.val <= 104

 answer:

class Solution {
public:
    // 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1
    int getHeight(TreeNode* node) {
        if (node == NULL) {
            return 0;
        }
        int leftHeight = getHeight(node->left);
        if (leftHeight == -1) return -1;
        int rightHeight = getHeight(node->right);
        if (rightHeight == -1) return -1;
        return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight);
    }
    bool isBalanced(TreeNode* root) {
        return getHeight(root) == -1 ? false : true;
    }
};

topic:

257. All Paths of a Binary Tree

Given the root of a binary tree  root ,   return all paths from the root to the leaves, in any order .

A leaf node  is a node that has no child nodes.

Example 1:

Input: root = [1,2,3,null,5]
 Output: ["1->2->5","1->3"]

Example 2:

Input: root = [1]
 Output: ["1"]

hint:

  • The number of nodes in the tree is in the  [1, 100] range
  • -100 <= Node.val <= 100

 answer:

class Solution {
private:

    void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {
        path.push_back(cur->val); // 中,中为什么写在这里,因为最后一个节点也要加入到path中 
        // 这才到了叶子节点
        if (cur->left == NULL && cur->right == NULL) {
            string sPath;
            for (int i = 0; i < path.size() - 1; i++) {
                sPath += to_string(path[i]);
                sPath += "->";
            }
            sPath += to_string(path[path.size() - 1]);
            result.push_back(sPath);
            return;
        }
        if (cur->left) { // 左 
            traversal(cur->left, path, result);
            path.pop_back(); // 回溯
        }
        if (cur->right) { // 右
            traversal(cur->right, path, result);
            path.pop_back(); // 回溯
        }
    }

public:
    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> result;
        vector<int> path;
        if (root == NULL) return result;
        traversal(root, path, result);
        return result;
    }
};

topic:

404. Sum of Left Leaves

Given the root node of a binary tree  root , return the sum of all left leaves.

Example 1:

Input: root = [3,9,20,null,null,15,7] 
 Output: 24 
 Explanation: In this binary tree, there are two left leaves, 9 and 15, so return 24

Example 2:

Input: root = [1]
 Output: 0

hint:

  • The number of nodes is in  [1, 1000] the range
  • -1000 <= Node.val <= 1000


 answer:

class Solution {
public:
    int sumOfLeftLeaves(TreeNode* root) {
        if (root == NULL) return 0;
        if (root->left == NULL && root->right== NULL) return 0;

        int leftValue = sumOfLeftLeaves(root->left);    // 左
        if (root->left && !root->left->left && !root->left->right) { // 左子树就是一个左叶子的情况
            leftValue = root->left->val;
        }
        int rightValue = sumOfLeftLeaves(root->right);  // 右

        int sum = leftValue + rightValue;               // 中
        return sum;
    }
};


Welcome to like, bookmark, comment, your encouragement is the biggest motivation for my creation! (๑╹◡╹)ノ"""

Copyright statement: This article is an original article of CSDN blogger "Dumengjiu", which follows the CC 4.0 BY-SA copyright agreement. For reprinting, please attach the original source link and this statement.
Original link: Dumengjiu's blog_CSDN blog-csdn domain blogger

Guess you like

Origin blog.csdn.net/weixin_53310927/article/details/131286244