【LeetCode】965. 單值二叉樹

題目描述

難度:【簡單】
標籤:【二叉樹】

如果二叉樹每個節點都具有相同的值,那麼該二叉樹就是單值二叉樹。

只有給定的樹是單值二叉樹時,才返回 true;否則返回 false。

示例

示例 1

輸入:[1,1,1,1,1,null,1]
輸出:true

示例 2

輸入:[2,2,2,5,2]
輸出:false

題目大意

所有二叉樹的節點的值都一樣,返回 true,否則返回 false 。

解題

站在其中一個節點(a)的角度:

  • a 的左右2個子節點的值相等,且 a 的值等於子節點的值
  • 如果 a 的某一邊的節點是null,那麼忽略,只考慮另一邊的結果
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isUnivalTree(TreeNode root) {
        if (root == null) {
            return false;
        }
        // 檢查左子節點
        boolean checkLeft = (root.left == null) || ((root.left.val == root.val) && isUnivalTree(root.left));
        // 檢查右子節點
        boolean checkRight = (root.right == null) || ((root.right.val == root.val) && isUnivalTree(root.right));

        return checkLeft && checkRight; 
    }
}

明確函數的「定義」是什麼,然後相信這個定義,利用這個定義推導最終結果,絕不要跳入遞歸的細節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章