zoukankan      html  css  js  c++  java
  • [LeetCode] 117. Populating Next Right Pointers in Each Node II Java

    题目:

    Follow up for problem "Populating Next Right Pointers in Each Node".

    What if the given tree could be any binary tree? Would your previous solution still work?

    Note:

    • You may only use constant extra space.

    For example,
    Given the following binary tree,

             1
           /  
          2    3
         /     
        4   5    7

    After calling your function, the tree should look like:

             1 -> NULL
           /  
          2 -> 3 -> NULL
         /     
        4-> 5 -> 7 -> NULL

    题意及分析:给出棵树,将树的每层用next指针链接起来。和上一题不同的是这里是一棵随意的二叉树。这里可以使用一个节点保存每一层的第一个节点,然后遍历该层就行。具体看代码注释。
    代码:
    /**
     * Definition for binary tree with next pointer.
     * public class TreeLinkNode {
     *     int val;
     *     TreeLinkNode left, right, next;
     *     TreeLinkNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public void connect(TreeLinkNode root) {
            while(root!=null){
                TreeLinkNode tempChild = new TreeLinkNode(0);       //记录下一层的首节点
                TreeLinkNode curChild = tempChild;
                while (root!=null){     //遍历某一层的节点,并将该层节点的子节点从左到右添加到下一层中去
                    if(root.left!=null){
                        curChild.next=root.left;
                        curChild=curChild.next;
                    }
                    if(root.right!=null){
                        curChild.next=root.right;
                        curChild=curChild.next;
                    }
                    root = root.next;
                }
                root = tempChild.next;      //将下一层的首节点装载到root,遍历下一层
            }
        }
    }
  • 相关阅读:
    希尔排序
    快速排序
    归并排序
    插入排序
    简单选择排序
    冒泡排序
    算法之时间复杂度和空间复杂度
    数据结构与算法思维导图
    rootfs根文件系统
    kernel 2.6.35.7向S5PV210移植
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7229748.html
Copyright © 2011-2022 走看看