首先,选择一个合适的数据结构存储多叉树,我使用了“左孩子右兄弟”的方法,使用二叉树来存储多叉树,便于实现和遍历。
其次,宽度优先搜索时:
1.用队列(先进先出)保存遍历路径。
2.搜索顺序:对节点A,先访问节点的左节点(第一个孩子节点),从该左节点开始一直向右遍历直到最右叶子节点(所有兄弟节点),此时遍历完A的所有直接孩子。遍历的同时,节点入队列。
3.遍历完A的孩子后,取队列中的下一个节点,继续遍历其孩子节点。直到队列为空。
代码用C++实现,省略了类Queue, Node的实现:

Move Zeroes

Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. For exa...

阅读全文

Odd Even Linked List

Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not ...

阅读全文

Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space...

阅读全文