首页 > 其他分享 >单值二叉树

单值二叉树

时间:2023-06-19 19:11:37浏览次数:36  
标签:单值 right TreeNode val int 二叉树 root left

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

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

示例 1:

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

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

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

递归判断单值

/**
 * 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) {
        int value = root.val;
        return isUnitValue(root,value);
    }

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

递归判断节点值
/**

  • 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 true;
    //判断子节点是否跟根节点是否一致
    if(root.left!=null&&root.left.val!=root.val) return false;
    if(root.right!=null&&root.right.val!=root.val) return false;
    return isUnivalTree(root.left)&&isUnivalTree(root.right);
    }
    }

标签:单值,right,TreeNode,val,int,二叉树,root,left
From: https://www.cnblogs.com/xiaochaofang/p/17491961.html

相关文章

  • 翻转二叉树
    给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/invert-binary-tree著作权归......
  • 算法与数据结构Day03——平衡二叉树的根
    #include<stdio.h>#include<stdlib.h>typedefstructnode*AVLTree;structnode{intData;AVLTreeLeft;AVLTreeRight;};intHigh(AVLTreeT){if(!T)return0;intleft=High(T->Left)+1;intright=High(T->......
  • 二叉树03
    104二叉树的最大深度用递归的写法。递归的思路是,当前树的深度=max(左子树深度,右子树深度)+1  111二叉树的最小深度 对于上面这颗二叉树,离root最近的叶子节点是4,所以最小深度是3(路径1-2-4,有3个节点)。而如果我们直接把递归里的max改成min,由于root节点的左节点是N......
  • 数据结构课程设计2023夏7-4 先序和中序构造二叉树
    本题目要求用先序序列和中序序列构造一棵二叉树(树中结点个数不超过10个),并输出其后序序列。输入格式:在第一行中输入元素个数。第二行中输入先序序列,用空格分隔。第三行中输入中序序列,用空格分隔。输出格式:输出此二叉树的后序序列,用空格分隔,最后也有一个空格。输入样例:......
  • c++实现二叉树中序遍历
    #include<iostream>usingnamespacestd;//定义二叉树节点结构体structTreeNode{  intval;  TreeNode*left;  TreeNode*right;  TreeNode(intx):val(x),left(NULL),right(NULL){}};//中序遍历函数voidinorderTraversal(TreeNode*root){......
  • 合并二叉树
    合并二叉树题目:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL的节点将直接作为新二叉树的节点。示例1:输入:输......
  • 二叉树的直径
    二叉树的直径题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例:给定二叉树返回3,它的长度是路径[4,2,1,3]或者[5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表......
  • 2023-06-14:我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,
    2023-06-14:我们从二叉树的根节点root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度)然后输出该节点的值。(如果节点的深度为D,则其直接子节点的深度为D+1根节点的深度为0如果节点只有一个子节点,那么保证该子节点为左子节点给出遍......
  • 2023-06-14:我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,
    2023-06-14:我们从二叉树的根节点root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度)然后输出该节点的值。(如果节点的深度为D,则其直接子节点的深度为D+1根节点的深度为0如果节点只有一个子节点,那么保证该子节点为左子节点给出遍历输出......
  • 2023-06-14:我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,
    2023-06-14:我们从二叉树的根节点root开始进行深度优先搜索。在遍历中的每个节点处,我们输出D条短划线(其中D是该节点的深度)然后输出该节点的值。(如果节点的深度为D,则其直接子节点的深度为D+1根节点的深度为0如果节点只有一个子节点,那么保证该子节点为左子节点给出遍历输出......