有些情况下,一棵树用节点的父节点信息来表示,而很多算法都需要从根出发,去访问节点,于是乎需要前者向后者的转换。
不过,这种算法,估计就是那种很经典,看过就不会忘的,就直接参考网上的了:
https://www.geeksforgeeks.org/construct-a-binary-tree-from-parent-array-representation/
基本思想
记录每个节点的指针:nodeP
当节点尚未生成,即nodeP
还为null,生成一个节点,将其父节点指针对应孩子指向它,如果此时父节点并未生成,那么递归的生成
实现
|
|
复杂度分析
时间
每调用一次createNode
生成一个节点,而createNode中没有什么循环之类的操作,所以,时间复杂度O(N)
空间
需要一个nodeP
数组,所以空间复杂度是O(N)