首页 > 其他分享 >颜色二叉树

颜色二叉树

时间:2022-10-20 16:34:32浏览次数:49  
标签:parentTreeNode TreeNode parent int 二叉树 颜色 root id

颜色二叉树

一棵节点带颜色的二叉树,每个节点除了有id值,还有一个颜色变量color。每个节点的id值不同。

TreeNode类定义:

class TreeNode{ TreeNode left; TreeNode right; int id; // 每个节点的id值不同。 int color; // 颜色 }

问题:

给定一个节点id值,找到该节点最近的相同颜色的祖宗结点的id,找不到返回-1。

方法定义:

public int findSameColorParent(TreeNode root, int id){ // TODO }  
    Map<Integer,TreeNode> parent = new HashMap<>();
    Map<Integer,TreeNode> self = new HashMap<>();

    public void dfs(TreeNode root) {
        self.put(root.id,root);
        if (root.left != null) {
            parent.put(root.left.id, root);
            dfs(root.left);
        }
        if (root.right != null) {
            parent.put(root.right.id, root);
            dfs(root.right);
        }
    }


    public int findSameColorParent(TreeNode root, int id){
        dfs(root);
        TreeNode curTreeNode = self.get(id);
        TreeNode parentTreeNode = parent.get(id);
        while(parentTreeNode!=null){
            if(parentTreeNode.color==curTreeNode.color){
                return parentTreeNode.id;
            }else{
                parentTreeNode = parent.get(parentTreeNode.id);
            }
        }
        return -1;
    }

 

标签:parentTreeNode,TreeNode,parent,int,二叉树,颜色,root,id
From: https://www.cnblogs.com/shijianchuzhenzhi/p/16810350.html

相关文章

  • Python OpenCV4趣味应用系列(四)---颜色物体实时检测
    今天,我们来实现一个视频实时检测颜色物体的小实例,视频中主要有三个颜色物体,我们只检测红色和绿色的球状物体,如下图所示:第一步需要打开视频(或者摄像头):cap=cv2.VideoCaptur......
  • 基于OpenCV实现图像间快速颜色迁移
    作者:AdrianRosebrock编译:ColorSpace导读本文主要介绍如何在两个图像之间实现颜色迁移的功能。给定任意两个图像,一个源图像,一个目标图像,然后可以将源图像的颜色空间迁移到......
  • OpenCV无缝融合应用(二)--指定目标颜色改变(附C++源码)
    导读本期将介绍并演示OpenCV中使用colorChange实现图像中指定目标颜色改变的效果。介绍colorChange与seamlessClone同属于SeamlessCloning部分,算法均来自下面这篇论文:​​h......
  • 全局平衡二叉树
    全局平衡二叉树,其实说白了就是在树链剖分的基础上再次对每条链以相对平衡的方法再次重构成一颗固态的二叉树的形态,或者说在LCT的基础上把Splay换成满足全局平衡的二叉......
  • 【汇编】实现颜色转换,并绘制图形(.asm源码)
    项目环境编译环境:搭建一个nasm2.8的编译环境。镜像文件:采用winhex_18.2刷入编码。虚拟机:采用Bochs-2.4.5。项目软件傻瓜式环境配置。解压文件到D盘能直接使用。运行结果自定......
  • 学习(二叉树中序遍历)
    1、108、将有序数组转换为二叉搜索树(重点)structTreeNode*helper(int*nums,intleft,intright){//用一个有序数组来建一个名叫helper的二叉树if(left>righ......
  • LeetCode 144 94 145 关于前中后序遍历二叉树的思考(包含迭代法)
    用系统堆栈实现(递归)很容易实现:前序:do(),递归左儿子,递归右儿子中序:递归左儿子,do(),递归右儿子后序:递归左儿子,递归右儿子,do()用自定义栈实现(迭代法)首先首......
  • 理解二叉树的四种遍历-前序、中序、后序、层序
    理解二叉树的四种遍历-前序、中序、后序、层序一、易懂的形象理解其实从名字就可以很好的理解这三种遍历,我在第二点时候说,但是估计能翻到我的文的同学们之前肯定看过好多......
  • 105. 从前序与中序遍历序列构造二叉树
    题目描述给定两个整数数组 preorder和inorder ,其中 preorder是二叉树的先序遍历,inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入:preorder=[......
  • 2022-10-16 字体颜色渐变
    background-image:-webkit-linear-gradient(bottom,red,#fd8403,yellow);-webkit-background-clip:text;-webkit-text-fill-color:transparent;这里只记录最简......