leetcode-树练习-populating-next-right-pointers-in-each-node

populating-next-right-pointers-in-each-node

https://www.nowcoder.com/practice/fdbd05d647084fcf9be78444e231998b?tpId=46&tqId=29064&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking

这道题目不知道重点在考察什么。

填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。
初始时,所有的next指针都为NULL
注意:
你只能使用常量级的额外内存空间
可以假设给出的二叉树是一个完美的二叉树(即,所有叶子节点都位于同一层,而且每个父节点都有两个孩子节点)。
例如:给出如下的完美二叉树

采用改进后的层次遍历写法,很快解决了这道题目。

/**
 * Definition for binary tree with next pointer.
 * public class TreeLinkNode {
 *     int val;
 *     TreeLinkNode left, right, next;
 *     TreeLinkNode(int x) { val = x; }
 * }
 */
import java.util.Deque;
import java.util.LinkedList;
public class Solution {
    public void connect(TreeLinkNode root) {
        //不是很清楚这道题目考察的点是什么,为什么要特地强调常量级别额外的内存空间
        if(root == null)return;
        if(root.left == null && root.right ==null)return;

        Deque<TreeLinkNode> queue = new LinkedList<>();
        queue.offerLast(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i=0; i< size; i++){//改进的层层遍历写法的关键点
                TreeLinkNode head = queue.pollFirst();
             

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白刷Leetcode 文章被收录于专栏

那些必刷的leetcode

全部评论
题目要求常数级别的空间复杂度,但是貌似这里代码都不符合要求呀,其实本题难点正在于“常数级别的空间复杂度”
点赞 回复 分享
发布于 2020-08-21 16:35
学过数据结构的大部分人第一反应应该是层序遍历,其实稍微再想想可以用递归解决,代码更简洁
点赞 回复 分享
发布于 2020-08-18 09:07
似乎想的太复杂啦~ 既然有了右兄弟的指针,为什么还要用队列层序遍历呢?
点赞 回复 分享
发布于 2020-05-24 00:41

相关推荐

烤点老白薯:这种东西到时候公众号搜索都有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务