LeetCode 965. 单值二叉树

作者: TheKey_ | 来源:发表于2019-08-18 18:37 被阅读0次

965. 单值二叉树

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false。

示例1:
示例1
输入:[1,1,1,1,1,null,1]
输出:true
示例2:
示例2
输入:[2,2,2,5,2]
输出:false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/univalued-binary-tree/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


  • 创建二叉搜索树

public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
  • 1. 递归法

思路:

  1. 递归终止条件为 当前节点为空
  2. 遍历根节点的左右子树和根节点的值进行比较,如果不同,return false 即可
   public boolean isUnivalTree(TreeNode root) {
        return isUnivalTree(root, root.val);
    }

    private boolean isUnivalTree(TreeNode root, int val) {
        if (root == null) return true;
        if (root.val != val) return false;
        return isUnivalTree(root.left, val) && isUnivalTree(root.right, val);
    }

复杂度分析:

  • 时间复杂度:O(n), 需要遍历每个节点

  • 空间复杂度:O(n), 使用了递归,栈中存在 h 个方法调用,h 为二分搜索树的高度

  • 2. 迭代法

思路:

  1. 创建队列或栈, 将根节点添加进去
  2. 取出队首元素,和根节点的值进行比较,如果不相同就 return false即可
  3. 将根节点的左右子树添加进去即可
  public boolean isUnivalTree(TreeNode root) {
        if (root == null) return true;
        int val = root.val;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            TreeNode cur = queue.poll();
            if (cur.val != val) return false;
            if (cur.left != null) queue.add(cur.left);
            if (cur.right != null) queue.add(cur.right);
        }
        return true;
    }

复杂度分析:

  • 时间复杂度:O(n), 需要遍历每个节点
  • 空间复杂度:O(n), 队列中需要存储 n 个元素

  • 源码

  • 我会每天更新新的算法,并尽可能尝试不同解法,如果发现问题请指正
  • Github

相关文章

  • 965. 单值二叉树

    965. 单值二叉树 - 力扣(LeetCode)[https://leetcode.cn/problems/un...

  • LeetCode 965. 单值二叉树

    965. 单值二叉树 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,...

  • Leetcode-965: 单值二叉树

    965. 单值二叉树 1. 问题描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树...

  • LeetCode 965.单值二叉树 python/scala

    Univalued Binary Tree 环境:python 3.6,scala 2.11.8 题意 如果二叉树...

  • 965. 单值二叉树

    如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则...

  • 965. 单值二叉树(Python)

    更多精彩内容,请关注【力扣简单题】。 题目 难度:★☆☆☆☆类型:二叉树 如果二叉树每个节点都具有相同的值,那么该...

  • 2019-03-07 Day 60

    1.#### 单值二叉树如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时...

  • LeetCode刷题之路 单值二叉树

    单值二叉树【简单】 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才...

  • 965. 单值二叉树(难度:简单)

    题目链接:https://leetcode.cn/problems/univalued-binary-tree/[...

  • 单值二叉树

    如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则...

网友评论

    本文标题:LeetCode 965. 单值二叉树

    本文链接:https://www.haomeiwen.com/subject/rfhdsctx.html