首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编写最短程序计算二叉树的高度

编写最短程序计算二叉树的高度
EN

Code Golf用户
提问于 2019-08-04 17:28:21
回答 16查看 6.5K关注 0票数 20

二叉树的高度是从根节点到离根最远的节点子节点的距离。

以下是一个例子:

代码语言:javascript
运行
复制
           2 <-- root: Height 1
          / \
         7   5 <-- Height 2
        / \   \
       2   6   9 <-- Height 3
          / \  /
         5  11 4 <-- Height 4 

二叉树高度:4

二叉树的Definition

树是包含有符号整数值以及其他两个树或指向它们的指针的对象。

二叉树结构的结构如下所示:

代码语言:javascript
运行
复制
typedef struct tree
{
  struct tree * l;

  struct tree * r;

  int v;

} tree;

挑战:

输入

二叉树的根

输出

表示二叉树高度的数字。

假设给定二叉树的根作为输入,编写计算二叉树高度并返回高度的最短程序。字节数最少的程序(记帐白空间)获胜。

EN

回答 16

Code Golf用户

回答已采纳

发布于 2019-08-04 17:52:43

果冻,3 字节数

代码语言:javascript
运行
复制
ŒḊ’

接受表示树的列表的一元链接:[root_value, left_tree, right_tree],其中每个left_treeright_tree都是相似的结构(如果需要的话是空的),这会产生高度。

在网上试试!

怎么做?

在果冻里很琐碎:

代码语言:javascript
运行
复制
ŒḊ’ - Link: list, as described above
ŒḊ  - depth
  ’ - decremented (since leaves are `[value, [], []]`)
票数 11
EN

Code Golf用户

发布于 2019-08-04 20:19:08

Haskell,33字节

代码语言:javascript
运行
复制
h L=0 
h(N l r _)=1+max(h l)(h r)

使用自定义树类型data T = L | N T T Int,这是Haskell等价于在挑战中给出的C结构。

在网上试试!

票数 6
EN

Code Golf用户

发布于 2019-08-04 21:20:13

Perl 6,25字节

代码语言:javascript
运行
复制
{($_,{.[*;*]}...*eqv*)-2}

输入是一个3元素列表(l, r, v).空树是空列表。

在网上试试!

解释

代码语言:javascript
运行
复制
{                       }  # Anonymous block
    ,        ...  # Sequence constructor
  $_  # Start with input
     {.[*;*]}  # Compute next element by flattening one level
               # Sadly *[*;*] doesn't work for some reason
                *eqv*  # Until elements doesn't change
 (                   )-2  # Size of sequence minus 2

旧解决方案,30字节

代码语言:javascript
运行
复制
{+$_&&1+max map &?BLOCK,.[^2]}

在网上试试!

票数 6
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/189220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档