填充每个节点的下一个右节点指针II题目描述:给定一棵二叉树:structNode{intval;节点*左;节点*右;Node*next;}填充它的每个next指针,以便this指针指向它的下一个右节点。如果找不到下一个正确的节点,则将next指针设置为NULL。最初,所有下一个指针都设置为NULL。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:层序遍历的解法过程和LeetCode-116一模一样——填充每个节点的下一个右节点指针。现在想想,116题中提到了完美二叉树,应该会用到完美二叉树的一些性质。更好的解决方案,目前的解决方案是一般的二叉树解决方案。首先,如果root为空或者左右子节点都为空,则不需要处理next指针,直接返回root。否则,当二叉树有多个节点时,使用队列遍历二叉树,以便记录二叉树每一层的节点,然后依次处理当前层各节点的next指针。由于在处理过程中所有节点的顺序都没有改变,所以最终返回的是root。importcom.kaesar.leetcode.Node;importjava.util.LinkedList;importjava.util.Queue;publicclassLeetCode_117{/***处理方式同LeetCode-116-填充每个的下一个右节点指针node*@paramroot*@return*/publicstaticNodeconnect(Noderoot){//如果根为空或者左右节点为空,不用处理,直接返回根即可if(root==null){返回根;}if(root.left==null&&root.right==null){returnroot;}//使用队列记录每一层的节点Queue
