博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Populating Next Right Pointers in Each Node II
阅读量:5144 次
发布时间:2019-06-13

本文共 2171 字,大约阅读时间需要 7 分钟。

Given a binary tree

struct TreeLinkNode {  TreeLinkNode *left;  TreeLinkNode *right;  TreeLinkNode *next;}

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.

Initially, all next pointers are set to NULL.

Note:

  • You may only use constant extra space.
  • Recursive approach is fine, implicit stack space does not count as extra space for this problem.

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

 

Approach #1: Java.

/** * 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) {        TreeLinkNode dummyHead = new TreeLinkNode(0);        TreeLinkNode pre = dummyHead;        while (root != null) {            if (root.left != null) {                pre.next = root.left;                pre = pre.next;            }            if (root.right != null) {                pre.next = root.right;                pre = pre.next;            }            root = root.next;            if (root != null) {                pre = dummyHead;                root = dummyHead.next;                dummyHead.next = null;            }        }    }}

  

Appraoch #2: Python.

# Definition for binary tree with next pointer.# class TreeLinkNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = None#         self.next = Noneclass Solution:    # @param root, a tree link node    # @return nothing    def connect(self, root):        tail = dummy = TreeLinkNode(0)        while node:            tail.next = node.left            if tail.next:                tail = tail.next            tail.next = node.right            if tail.next:                tail = tail.next            node = node.next            if not node:                tail = dummy                node = dummy.next

  

 

转载于:https://www.cnblogs.com/ruruozhenhao/p/10004493.html

你可能感兴趣的文章
JQUERY 大于
查看>>
ZooKeeper做独立server执行(上)
查看>>
《经济地理与企业兴衰》学习笔记
查看>>
正确 C# 未来的期望
查看>>
【UVA】434-Matty's Blocks
查看>>
五、宽度优先搜索(BFS)
查看>>
运行一个窗体直接最大化并把窗体右上角的最大化最小化置灰
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
WebForm——IIS服务器、开发方式和简单基础
查看>>
小实验3:实现haproxy的增、删、查
查看>>
Angular中ngModel的$render的详解
查看>>
读《格局》| 未到年纪的真理
查看>>
[转]《城南旧事》里的《送别》
查看>>
07动手动脑
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
Eclipse插件安装4种方法
查看>>
MySQL忘记密码怎么办?
查看>>
define 和 const常量有什么区别?
查看>>