问题:
给定一个二叉树
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
填充所有节点的next指针,指向最接近它的同一层右边节点。如果没有同一层没有右边的节点,则应该将next指针设置为NULL。
初始时,所有的next指针都为NULL
注意:
- 你只能使用常量级的额外内存空间
- 可以假设给出的二叉树是一个完美的二叉树(即,所有叶子节点都位于同一层,而且每个父节点都有两个孩子节点)。
思路:我们先来看一个完美的二叉树图,根据图形可以更好的整理自己的思路:初始状态时,所有的next指针都和root一样,指向的是null。现在,需要把右边有结点的结点next指针指向右边的结点,这包含了两种情况。第一种情况,如果一个结点具有左右子树,那么就让左子树的next指针指向右子树,如下所示:
可以看到,像结点4,结点5这样具有相邻关