最近学数据结构,学到树的双亲表示法,这是老师上课讲的问题,感觉老师讲的不是很清楚,也没听懂,有以下问题:
1.双亲表示法找节点A的孩子节点,网上有的课件和严蔚敏吴伟民编的《数据结构》一书都讲要遍历整个结构,我感觉其实只要遍历这个节点之后的节点就可以了,而且遍历到一个parent不等于这个节点下标(这就可以找到最右边的孩子)就可以结束了。网上有讲这个时间性能等于O(n),怎么算的?上课课件又有讲这时加一个firstchild节点,这时我感觉只要从这个firstchild节点遍历到最右边的孩子就可以了。这个时候时间复杂度又等于多少,怎么算的,抱歉,我的时间复杂度怎么算没搞太明白,能不能提供这里面详细的公式?
2.双亲表示法找节点A的兄弟节点,网上也有分析时间复杂度是“遍历数组,O(n)”
,我感觉这时候过程是先查找双亲节点,如果等于-1就无兄弟节点,如果不等于再从双亲节点的下一个节点开始遍历,先遍历到双亲节点第一个孩子,再遍历到最后一个孩子,夹在中间的又不是A的就是兄弟节点。这个O(n)又是怎么算的?上课课件又有这时加一个rightsib节点即紧挨这个节点右边的兄弟节点(不是最右边的兄弟节点),这个时候查找我感觉过程是:开始和之前一样,查找双亲节点,如果等于-1就无兄弟节点,再从双亲节点后一个节点开始遍历,先遍历到双亲节点第一个孩子,再从rightsib开始遍历到双亲节点最右边的孩子,rightsib等于-1的话最右边的孩子就是A,这个时候时间复杂度又怎么算?
问题很多,觉得这里面很复杂,网上和教科书又找不到答案,希望哪位大神能解答一下?万分感谢