首页 > 其他分享 >二叉树的堂兄弟节点

二叉树的堂兄弟节点

时间:2023-08-11 19:23:41浏览次数:47  
标签:TreeNode val int 二叉树 堂兄弟 root 节点

在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。

如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。

我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。

只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。

示例 1:

输入:root = [1,2,3,4], x = 4, y = 3
输出:false
示例 2:

输入:root = [1,2,3,null,4,null,5], x = 5, y = 4
输出:true
示例 3:

输入:root = [1,2,3,null,4], x = 2, y = 3
输出:false

提示:

二叉树的节点数介于 2 到 100 之间。
每个节点的值都是唯一的、范围为 1 到 100 的整数。

/**
 * 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 isCousins(TreeNode root, int x, int y) {
        //深度优先遍历,当找到值的时候进行返回父节点值和深度进行判断
        //节点、父节点、深度,搜索目标值,返回的是父节点和深度进行判断
        int[] xi = dfs(root,0,0,x);
        int[] yi = dfs(root,0,0,y);
        return xi[0] != yi[0] && xi[1] == yi[1]; 
    }
    public int[] dfs(TreeNode root,int fater,int depth,int value){
        //如果为空那么直接返回
        if(root==null)return new int[]{-1,-1};
        if(root.val == value){
            return new int[]{fater!=0?fater:1,depth};
        }
        int l[] = dfs(root.left,root.val,depth+1,value);
        if(l[0]!=-1)return l;
        return dfs(root.right,root.val,depth+1,value);
    }
}

标签:TreeNode,val,int,二叉树,堂兄弟,root,节点
From: https://www.cnblogs.com/xiaochaofang/p/17623778.html

相关文章

  • 单节点k3s部署rancher
    服务器优化sed-i's/enforcing/disabled/'/etc/selinux/configsetenforce0systemctlstopfirewalldsystemctldisablefirewalldswapoff-ased-ri's/.*swap.*/#&/'/etc/fstabcat>/etc/sysctl.d/k8s_better.conf<<EOFnet.br......
  • 左叶子节点之和
    首先将非终止条件,非递归函数部分叫做单层递归。思考过程如下:想解题思路:一个节点的左节点的左节点为空,左节点的右节点为空,那么这个结点就是左叶子结点,那么我们就要给它的数值加到sum上去解题思路即为单层递归,那么将单层递归写成程序为:1if((node->left->left==nullpt......
  • 【JavaScript34】获取和修改属性节点
    根据W3C的HTMLDOM标准,HTML文档中的所有内容都是节点:整个文档是一个文档节点每个HTML元素是元素节点HTML元素内的文本是文本节点每个HTML属性是属性节点注释是注释节点属性节点比如有一个p标签元素节点<pid="p2"class="text-center">点我看看</p>-那......
  • 二叉树和B树
    1、树(Tree)的基本概念 节点、根节点、父节点、子节点、兄弟节点一棵树可以没有任何节点,称为空树一棵树可以只有1个节点,也就是只有根节点子树、左子树、右子树节点的度(degree):子树的个数树的度:所有节点度中的最大值叶子节点(leaf):度为0的节点非叶子节点:度不为0的节点......
  • 2.Elasticsearch单节点安装脚本
    #!/bin/bashES_VERSION=7.17.5#ES_VERSION=7.9.3#ES_VERSION=7.6.2UBUNTU_URL="https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/apt/pool/main/e/elasticsearch/elasticsearch-${ES_VERSION}-amd64.deb"RHEL_URL="https://mirrors.tuna.tsingh......
  • k8s部署 elasticsearch7集群,其中一台节点报错无法域名解析 :resolving host...
    部署es7集群其中一个节点一直报错resolvinghost考虑有两点,要么是coredns组件出问题了,无法解析,要么是calico网络组件出问题了,首先我就去看网络组件了,果然发现问题,我这台机器有两个网卡,一个是enp9s0(172.16.2.30地址),一个是enp11s0(172.16.2.25地址),我加入的节点是30机器,但是calico绑定......
  • 【JavaScript31】HTML DOM节点与节点属性
    前言DOM(DocumentObjectModel)文档对象模型,通过HTMLDOM,JavaScript能够访问和改变HTML文档的所有元素。当网页被加载时,浏览器会创建页面的文档对象模型(DocumentObjectModel)。HTMLDOM模型被结构化为对象树:DOM节点根据W3C的HTMLDOM标准,HTML文档中的所有内......
  • [代码随想录]Day13-二叉树part02
    题目:102.二叉树的层序遍历思路:先把根放进去,然后每次都是左右就可以了。记录一个深度,当len(res)==deepth的时候就说明这个深度还没有实例化,先搞一个再去收集。代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeN......
  • 二叉树后序遍历非递归遍历实现图解
    二叉树的后序遍历输入:{1,#,2,3}返回值:[3,2,1]输入:{1}返回值:[1]代码实现publicint[]postorderTraversal(TreeNoderoot){TreeNodecur=root;List<Integer>list=newArrayList<>();Deque<TreeNode>stack=newArrayDeq......
  • vue+el-tree 通过下拉框选中节点,定位到当前节点,并高亮
    此处为下拉选择器:<el-selectref="searchSelect"v-model="filter"filterableremotesize="mini"clearableplaceholder="请输入关键词":remo......