微软100题第11题(求二叉树中节点的最大距离)

微软100题(11) 二叉树中节点的最大距离 题目: 求二叉树中节点的最大距离... 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离 我觉得相隔最远的 应该是左子树最深的 和 右子树最深的结点之间 所以转变为求左子树深度 和 右子树深度 最长距离为左右子树深度之和 int TreeDepth(Bina 阅读详情

发布一个k8s部署视频:https://edu.youkuaiyun.com/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.youkuaiyun.com/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件


————————————————------------------------------------------------------------------------------------------------------------------

1scala版本

package ms

import scala.util.Random
/**
 * 第11题(树)
求二叉树中节点的最大距离...
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,
我们姑且定义"距离"为两节点之间边的个数。
写一个程序,
求一棵二叉树中相距最远的两个节点之间的距离。
 * 
 */
class RandomBinaryTree{
  var root:RandomNode=null;
  def init(data:List[Int]){
    if(data.length>0){
      root=RandomNode(data(0))
      if(data.length>1){
        for(i<-1 until data.length){
          insertRandomNode(root,data(i))
        }
      }
    }
  }
  
  private[this] def insertRandomNode(parent:RandomNode,value:Int){
    var  b:Boolean= Random.nextBoolean();
    if(b){
      if(parent.left==null){
        parent.left=RandomNode(value)
      }else{
        insertRandomNode(parent.left, value)
      }
    }else{
      if(parent.right==null){
        parent.right=RandomNode(value)
      }else{
        insertRandomNode(parent.right, value)
      }
    }
  }
  
  def computeMaxDepth(parent:RandomNode):Unit={
     if(parent.left==null){
       parent.leftDepth=0;
     }
     if(parent.right==null){
       parent.rightDepth=0;
     }
     if(parent.left!=null){
       computeMaxDepth(parent.left)
       parent.leftDepth=math.max(parent.left.leftDepth,parent.left.rightDepth)+1
     }
     if(parent.right!=null){
       computeMaxDepth(parent.right)
       parent.rightDepth=math.max(parent.right.leftDepth, parent.right.rightDepth)+1
     }
     
  }
  
  def computeMaxLongDepth(parent:RandomNode):Int={
    if(parent==null){
      return 0
    }
    val maxLongDepth=parent.leftDepth+parent.rightDepth;
    val leftmax=computeMaxLongDepth(parent.left)
    val rightmax=computeMaxLongDepth(parent.right)
    return math.max(maxLongDepth, math.max(leftmax, rightmax))
  }
}

case class RandomNode(var value:Int,var left:RandomNode=null,var right:RandomNode=null,var leftDepth:Int= -1,var rightDepth:Int= -1 )

object MicroSoft011 {
  def main(args: Array[String]): Unit = {
    val data=List(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
    val tree=new RandomBinaryTree();
    tree.init(data)
    tree.computeMaxDepth(tree.root)
    println(tree.computeMaxLongDepth(tree.root));
    println()
  }
  
}

2java版

 

3python版

'''
Created on 2017-1-18

@author: admin
/** 
 * 第11题(树) 
求二叉树中节点的最大距离... 
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 
我们姑且定义"距离"为两节点之间边的个数。 
写一个程序, 
求一棵二叉树中相距最远的两个节点之间的距离。 
 *  
 */  
'''
from _overlapped import NULL
import sys
import random

class RandomBinaryTree:
    def __init__(self,data):
        if len(data)>0:
            self.root=RandomNode(data[0])
            if len(data)>1:
                for i in range(1,len(data)):
                    self._insertNode(self.root,data[i])
    def _insertNode(self,parent,value):
        direction=random.choice([True,False])
        if direction:
            if parent.left==NULL:
                parent.left=RandomNode(value)
            else:
                self._insertNode(parent.left, value)
        else:
            if parent.right==NULL:
                parent.right=RandomNode(value)
            else:
                self._insertNode(parent.right, value)
    def computeDepth(self,parent):
        if parent.left==NULL:
            parent.leftDepth=0
        if parent.right==NULL:
            parent.rightDepth=0
        if parent.left!=NULL:
            self.computeDepth(parent.left)
            parent.leftDepth=max([parent.left.rightDepth,parent.left.leftDepth])+1
        if parent.right!=NULL:
            self.computeDepth(parent.right)
            parent.rightDepth=max([parent.right.rightDepth,parent.right.leftDepth])+1
    def computeMaxDepth(self,parent):
        if parent==NULL:
            return 0
        depth=parent.leftDepth+parent.rightDepth+1
        leftmax=self.computeMaxDepth(parent.left)  
        rightmax=self.computeMaxDepth(parent.right)
        return max([depth,leftmax,rightmax])
class RandomNode:
    def __init__(self,value):
        self.value=value
        self.left=NULL
        self.right=NULL
        self.leftDepth=-sys.maxsize
        self.rightDepth=-sys.maxsize
        
if __name__ == '__main__':
    data=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
    tree=RandomBinaryTree(data)
    tree.computeDepth(tree.root)
    print(tree.computeMaxDepth(tree.root))

 
杭电oj2023题题目详解(Java版) 杭电oj2023题详解 阅读详情

相关推荐

JSON(详解)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示数据,通常用于在不同的系统之间进行数据交换。JSON数据以键-值对的形式组织,可以包含对象、数组、字符串、数字等基本数据类型。它经常在Web开发、API通信等领域被广泛使用。

7706

二叉树问题—二叉树节点间的最大距离

二叉树问题—二叉树节点间的最大距离 题目描述 从二叉树的节点 A 出发,可以向上或者向下走,但沿途的节点只能经过一次,当到达节点 B 时,路径上的节点数叫作 A 到 B 的距离。现在给出一棵二叉树,求整棵树上每对节点之间的最大距离。例如下图二叉树的节点间最大距离为节点5到节点7的距离为5。 思路如下 一个以h为根节点的树上,最大的距离只可能来自以下三种情况: 1)h左子树上的最大距离 2)h右子...

小白一枚,共同交流,共同进步~ 1230

matlab球面投影(二)

matlab球面投影,想做一个全景相机,不知道,要做成啥样,于是在MATLAB先仿真一下,看下是个啥样子 百度别人做的,复制下面的代码到MATLAB的命令串口下,,网上找了张全景图,可以是bmp,jpg,改程序就可以了 回车运行就可以看到结果。 复制下面代码时,下面的中文注释记得删除,MATLAB是会报错的, close all; clear all; clc [x,y,z]=sphere(50); A=imread('a.JPG'); //名字是自己命名的,记得改 B=warp(x,y,-z,

rjszcb的博客 3166

求二叉树中节点的最大距离

转自:http://hi.baidu.com/xiangzifengshi/blog/item/06081a1b4302a6c5a6866944.html 求二叉树中节点的最大距离 《编程之美》3.8 解法: 考虑到二叉树本身具有递归结构,因此考虑递归求解。 考虑其中任意一个节点P,若P有左子树和右子树,那么,最大距离的两个节点可能出现下面的情况:两个都在左子树中,两个都在右子树种,

577

Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)

需求说明:Verilog设计基础 内容       :testbench的设计 读取文件 写入文件 来自       :时间的诗 十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应。 端口分为 input,output 和 inout 类型产生激励信号的时候, input  对

时间的诗 5万+

RoboMaster新手必看:用STM32 HAL库搞定大疆M3508电机正反转(附完整代码)

本文详细介绍了如何使用STM32 HAL库驱动大疆M3508电机实现正反转控制,包括硬件准备、PWM配置、电机校准及完整代码实现。特别针对RoboMaster新手常见问题提供了解决方案,如电机抖动、不转等故障排查,并分享了缓启动、DMA更新等进阶技巧,帮助开发者快速掌握电机控制核心技术。

weixin_42519985的博客 228

编程之美3.8 求二叉树中节点的最大距离

题目: 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,定义“距离”为两个节点之间边的个数。 求一颗二叉树中相距最远的两个节点之间的距离 分析: 二叉树中距离最远距离的情况出现在:1.根节点到叶子节点。2.叶子节点到另一叶子节点 代码如下: public class TreeDistance { public static int manlen=0; public stat

kario_reina的专栏 716

YOLO26改进 - C3k2 | C3k2 融合 ARConv 自适应矩形卷积:动态调整卷积核形状与采样点 | CVPR 2025

本文介绍了将自适应矩形卷积(ARConv)模块与YOLO26相结合的方法。ARConv是针对遥感图像全色锐化任务设计的创新卷积模块,可自适应调整卷积核形状与采样点数量,解决传统卷积刚性限制,实现高效特征提取。其工作流程包括学习卷积核高度和宽度、选择采样点数量、生成采样图、卷积实现与空间自适应增强。我们将集成ARConv的C3k2_ARConv模块引入YOLO26,对相关代码进行修改和注册,并配置了YOLO26 - C3k2_ARConv.yaml文件。实验脚本显示,该结合方式应用于目标检测任务。

魔改工程师的博客 501

微软面试100题之11题:求二叉树中节点的最大距离

如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。

tongxinhaonan的专栏 1273

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3683

代谢组数据分析(二十八):基于广义估计方程(GEE)的方法探究代谢物与临床表型相关性

本研究利用广义估计方程(GEE)方法对代谢组学数据进行了深入分析,旨在探究代谢物与临床表型之间的相关性。代谢组学数据具有高维性、样本间相关性以及混杂因素的复杂性,传统的统计方法难以有效处理这些问题。GEE方法通过引入相关性结构,能够有效地处理样本间的相关性,并同时调整多个混杂因素,从而提高了分析结果的准确性和可靠性。

专注生信领域 1280

微软面试100题之第11题 求二叉树中节点的最大距离

http://blog.youkuaiyun.com/v_JULY_v/article/details/6126406   第11题 ------------------------------------ 求二叉树中节点的最大距离...   如果我们把二叉树看成一个图,   父子节点之间的连线看成是双向的,   我们姑且定义"距离"为两节点之间边的个数。   写一个程序,   求一棵二叉树

miao6664659的专栏 712

C# ScottPlot 5.0 WinForms 十字光标示例:轻松实现动态数值显示,你学会了吗?

ScottPlot是一个免费、开源的.NET交互式绘图库,能够轻松地实现大型数据集的交互式显示。它支持多种图表类型,如折线图、柱状图、饼图、散点图等。ScottPlot的性能非常出色,即使是处理千万级别的数据也游刃有余。

java专栏 2220

微软算法100题11 求二叉树中两节点之间的最大距离

第11 题求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离 思路: 一棵树中节点的最大距离,对于根节点来说,可以看做是左子树的最大深度加右子树的最大深度在加上左右各一个深度 (leftDepth + rightDepth + 1 + 1),但...

weixin_30652491的博客 202

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

永久优化:微软技术面试100题第11-20题答案修正与优化

永久优化:微软技术面试100题第11-20题答案修正与优化 作者:July、Sorehead、leeyunce、zhedahht等。时间:二零一一年四月四日。微博:http://weibo.com/julyweibo。出处:http://blog.youkuaiyun.com/v_JULY_v。-----------------------------------...

dinongxu8804的博客 165

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

微软面试100道之11 求二叉树中节点的最大距离

求二叉树中节点的最大距离... 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的, 我们姑且定义"距离"为两节点之间边的个数。 写一个程序, 求一棵二叉树中相距最远的两个节点之间的距离。 #include using namespace std; struct BSTreeNode { int data; int high; BSTreeNode * left;

domwin300208的专栏 570

July 微软面试100题 第11题 求二叉树的最大距离

<br /> 求二叉树中节点的最大距离 <br />如果我们把二叉树看成是一个图,父子节点之间的连线是双向的。我们姑且定义“距离”为两个节点之间的边的个数。<br />写一个程序。<br />求一棵二叉树中相距最远的两个节点之间的距离。<br /> ////////////////////////////////////////////////////////<br />一棵二叉树中节点的最大距离只有两种情况,经过根节点和不经过根节点。<br />所以可以用递归的方法来求解。<br />程序如下:<br /

shandongdaya的专栏 598

微软面试100题系列---求二叉树中节点的最大距离

题目如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义”距离”为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离; 实现分析计算一个二叉树的最大距离有两个情况: 情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。 情况B: 路径不穿过根节点,而是左子树或右子树的最大距离路径,取其大者。 只需要计算这两个情况的路径距离,并取其大者,就

bh_xiaoxinba的博客 392

【从零单排之微软面试100题系列】11之二叉树中结点的最大距离

原题参见july大神博客系列【微软面试100题】 题目描述:求一棵二叉树中相距最远的两个节点之间距离,“距离”定义为两个结点间“边”的个数   分析思路:最大距离可能是从根结点到某一叶子结点,也可能是从一个叶子结点到另一个叶子结点。对于前者,树的高度就是最大距离,对于后者,找到这两个结点的第一个公共祖先结点,最大距离即为祖先结点的左右子树高度之和。在实现的时候,取左子树的最远距离

leiqian2008的专栏 485

微软100题第11题

参照:http://blog.youkuaiyun.com/caryaliu/article/details/8107089 参照:http://blog.youkuaiyun.com/lalor/article/details/7626678 把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数。 写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 如

jyl1999xxxx的博客 335

全新整理 微软 谷歌 百度等公司经典面试100题 第101 160题

全新整理 微软 谷歌 百度等公司经典面试100题 第101 160题

gdfyug的博客 939
上一篇: 微软100题第9题(判断整数序列是不是二元查找树的后序遍历结果)
下一篇: 微软100题13题(输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针)
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值