Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
哈夫曼树用二叉链表存储空指针域_空二叉树有根节点吗,希望能够帮助你!!!。
做题目时遇到了这样的一道题目
设哈夫曼树中共有 99 个结点,则该树中有 ____ 个叶子结点;若采用二叉链表作为存储结构,则该树中有___个空指针域。
哈夫曼树是正则二叉树,没有度为1的结点,N=N2+1+N0,N0=50,显然第一空是50,但是第二空做题时的答案为51,我填的100,一开始比较懵,后面网上找了一些观点看法,发现很多人在纠结二叉链表到底是用双孩子表示法还是孩子兄弟表示法,因为他们认为这两者答案是不一致的。
很显然,很多人被这个孩子兄弟法给搞懵了,我一开始也是这样的,从一开始的答案为100犹豫变为51,然后又确定为100,一开始认为是100是因为我根本没有考虑什么孩子表示法,孩子兄弟表示法,按照常规的叶子结点N0必有2*N0个空指针域。但是后面对答案发现是51,网上找了一些,观点都各有不同,当看到孩子兄弟表示法时,我改变主意了,发现好像是每个孩子都有一个指针指向它的兄弟(根结点除外),于是我的答案变成了51。但是但是但是,后面我画图发现,其实孩子兄弟表示法,并不是每个结点都指向它的一个兄弟的,每个右孩子结点是没有兄弟的!!!而且所有的右叶子结点是没有孩子和兄弟的,更直观的请看下面面这幅图。
所以现在有一个结论为:孩子兄弟表示法和双孩子表示法其实空指针域数都是叶子结点数的两倍,但是不同的是双孩子表示法的空指针域都是叶子结点的,而孩子兄弟表示法的空指针域一部分是叶子结点的,另一部分是其他右孩子结点的空指针域 。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章