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

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

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.
  • You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).

 

For example,

Given the following perfect binary tree,

1       /  \      2    3     / \  / \    4  5  6  7

 

After calling your function, the tree should look like:

1 -> NULL       /  \      2 -> 3 -> NULL     / \  / \    4->5->6->7 -> NULL 注意: 递归的方法不是 constant space, 会 O logN 的calling deep, 所以要想其他办法做到遍历全部节点: 一个p 指针横着走,就会利用之前已经保存的信息,然后有个指针一直指向最左边
class Solution {public:    void connect(TreeLinkNode *root) {        if (root == NULL)            return;        if (root->right == NULL && root ->left == NULL)            return;        TreeLinkNode * p = root;        while (root ->left)        {            p = root;             while(p!=NULL)            {                p->left ->next = p -> right;                if (p->next != NULL)                    p->right ->next = p ->next ->left;                p = p->next;            }            root = root -> left;        }    }};

递归的写法,虽然对这题是不可以的,但递归的思路要清楚: 

1. 先判断返回或是异常条件

2. 做一些逻辑上的判断
3. 基本是 左右子树的判断

class Solution {public:    void connect(TreeLinkNode *root) {        if (root == NULL)            return;        if (root->right == NULL && root ->left == NULL)            return;         root->left ->next = root -> right;         if(root->next != NULL && root->next->left != NULL)            root->right ->next = root ->next ->left;        connect(root->left);        connect(root->right);            }};

 

转载于:https://www.cnblogs.com/zhuguanyu33/p/4551200.html

你可能感兴趣的文章
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
万能的SQLHelper帮助类
查看>>