1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

  • 本题要求判断一棵二叉树是否“平衡”:对树中每个节点,左、右子树的高度差的绝对值不超过 2。

  • 高度定义:以“边数”为单位,单节点(无任何子节点)的高度为 0;空子树高度记为 0。

  • 算法:采用后序遍历(DFS)自底向上计算。

    1. 递归求出当前节点左、右子树的高度 lh、rh;
    2. 检查 abs(lh - rh) ≤ 2;若某处不满足则整棵树不平衡;
    3. 当前节点高度:若无子节点为 0,否则为 max(lh, rh) + 1;

P3887.第2题-真假平衡树

    1000ms Tried: 16 Accepted: 9 Difficulty: 3 所属公司 : 小米
    算法与标签>DFS

题目内容

小明是一位聪明的少年,他喜欢解答各种数学难题。一天,小明的老师给了他一个新的挑战:检查一棵二叉树是否是平衡树。二又树的节点和子节点的关系已经给出,小明需要判断树是否平衡——也就是每个节点的左右子树高度差的绝对值是否不超过 222 。

一个子树的高度定义为该子树的根节点到其所有子孙节点中最远的那一个节点的距离。树上两个节点的距离定义为两点间的边数。我们认为如果某个节点没有左儿子(右儿子)那么左子树(右子树)的高度为 000 。此外,如果一棵子树只有单独一个节点,那么该子树的高度也为 000 。

小明想要在老师面前证明自己,但有的题目实在有点人难了,请你帮帮他!

输入描述

第一行一个整数 TTT ,表示数据组数:

对于每组数据:

第一行包含一个整数 nnn, 表示二叉树节点的数量。

第二行包含 nnn 个整数 a1,a2,…,ana_1,a_2,…,a_na1​,a2​,…,an​ 。

第三行包含 nnn 个整数 b1,b2,…,bnb_1,b_2,…,b_nb1​,b2​,…,bn​ 。

其中 aia_iai​ 表示第 iii 个节点的左儿子序号(即是第几个节点)。相似的,bib_ibi​ 表示第 iii 个节点的右儿子序号。如果没有对应儿子,那么由 −1-1−1 表示。其中根节点为第 111 个节点。保证描述了一颗合法的树。

1≤T≤100,1≤n≤2000,ai,bi∈1≤T≤100,1≤n≤2000,a_i,b_i ∈1≤T≤100,1≤n≤2000,ai​,bi​∈ {−1,1,2,...,n-1,1,2,...,n−1,1,2,...,n} 保证是合法的树。

输出描述

对于每个测试用例,输出一行 YESYESYES 或 NONONO ,表示该二叉树是否是平衡树。

样例1

输入

2
3
2 -1 -1
3 -1 -1
5
2 -1 4 -1 -1
-1 5 -1 -1 3

输出

YES
NO 

说明

第一组数据:

对于第一个二叉树,树的结构如下:

     1
   /   \
  2     3

111 为根节点的子树高度为 111 。最远为 1−>21->21−>2 或者 1−>31-> 31−>3 经历 111 条边。

222 为根节点的子树高度为 000 。

333 为根节点的子树高度为 000 。

222 和 333 均没有儿子,其左右子树高度按定义为 000 ,因此,它们是平衡的。而 111 的两个儿子高度都为 111 ,也是平衡的。

这个树是平衡树,因为每个节点的左右了树高度差不超过 222 。

第二组数据:

对于第二个二叉树,树的结构如下:

     1
    /
   2 
    \
     5
      \
       3
      /
     4

111 为根节点的子树高度为 444 。最远为 1−>2−>5−>3−>41->2->5->3->41−>2−>5−>3−>4 经历 444 条边。

222 为根节点的子树高度为 333 。最远为 2−>5−>3−>42->5->3->42−>5−>3−>4 经历 333 条边。

333 为根节点的子树高度为 111 。最远为 3−>43->43−>4 经历 111 条边。

444 为根节点的子树高度为 000 。

555 为根节点的子树高度为 222 。最远为 5−>3−>45->3->45−>3−>4 经历 222 条边。

这个树不是平衡树,因为节点 111 的左右子树高度分别为 333 和 000 (没有右儿子,右子树高度按定义为 000 )。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 3, 62ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?