在多叉树中查找某个节点及其拓展思考








在一棵树中查找某一个节点,最直接的算法是遍历一棵树,但是如果需要频繁查找的时候,时间复杂度会很高,如果只是数次的查找,那么每次都去遍历树就行,所以上面的算法主要应用是在一棵树中频繁查找节点的情形。算法思路主要是先遍历整棵树,然后构造出一个哈希表,哈希表里的每个元素都是一个对象(对应c语言里的一个结构体),构造完哈希表之后,以后的每次查找都可以直接从哈希表里找出需要查找的节点,在遍历的过程中把每个节点的父元素,子元素和本身节点的关系保存起来,这样可以应用于很多情形,例如查找某节点属于哪一层,或者某一层的节点有多少个等,这个算法的空间复杂度比较大,需要存储n个节点和cache和递归遍历时栈的开销,时间复杂度主要是遍历整棵树,时间复杂度是n,查找的复杂度是1.算法有待继续优化。

你可能感兴趣的:(数据结构和算法)