2011-04-27 364 views
0

1)术语不平衡二叉树是什么意思,以及我们如何编写算法来测试它?偏斜二叉树

2)我有一个问题,它要求编写一个函数来测试二叉树的深度。我认为这会工作,但不知道....:

function getDepth(Node n){ 
    if(node == null){ 
     return 0; 
    } 
    return 1 + Math.max(getDepth(node.left), getDepth(node.right)); 
} 
getDepth(root); 

谁能给我指点...

+0

它似乎是“歪斜的二叉树”这个词实际上是两个不同概念的组合。请重新说明你在找什么。 – FreeSnow 2011-04-27 16:32:34

+0

还有很多unbalenced的定义 - 例如,查找关于AVL树和红黑树的wikipedia文章。 – hugomg 2011-05-06 16:40:12

回答

0

1)偏移二进制树不是100%,普遍常用的术语(甚至谷歌获得困惑)。搜索你的讲座笔记或书籍,看看他们的意思。

  1. 要测试是一棵树有许多leves为节点,你可以只使用你已经拥有的功能才是最重要的层面,另一个函数来计算节点的数量。

    但是,如果发现节点数量不能与层数相同,则应该abe来制作另一个更高效的算法,该算法可以提前终止。

  2. 深度函数是正确的。毕竟,这是不是从树深度的定义中直接取得?

    (唯一可能的挑剔是深度(空)= 1,只要确保你不需要深度(空)= 0,而不是)

+0

偏斜二叉树是树尽可能深的地方 - 即它具有与层级一样多的节点(假定基准级别= 1) – user559142 2011-05-06 10:35:58

0

歪斜二叉树是具有唯一树一种类型的子树。如果一棵树只剩下子树,那么它就是左倾斜的树,反之亦然。