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

本文共 1858 字,大约阅读时间需要 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 分析:这道题就是层次遍历,把每一层的结点链接成单向链表,而且允许我们使用额外空间来解题,故而我们可以使用队列很容易就可以把此题解出来。每次把每一层的结点存入队列,然后把头结点取出,其结点的next指向队列新的头结点,当这一层结束时,插入NULL。循环进行,就可以了。 C++代码片段:
/** * Definition for binary tree with next pointer. * struct TreeLinkNode { *  int val; *  TreeLinkNode *left, *right, *next; *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {} * }; */class Solution {public:    void connect(TreeLinkNode *root) {        queue
qroot; if(root==NULL) return; qroot.push(root); qroot.push(NULL); while(qroot.size()) { TreeLinkNode* currentNode=qroot.front(); qroot.pop(); if(currentNode) { currentNode->next=qroot.front(); if(currentNode->left) qroot.push(currentNode->left); if(currentNode->right) qroot.push(currentNode->right); } else { if(qroot.size()) { qroot.push(NULL); } } } }};

 

 

转载于:https://www.cnblogs.com/awy-blog/p/3579241.html

你可能感兴趣的文章
分治法实现1-N的数字按字典序全排列组合 Java语言
查看>>
序列化 与 反序列化
查看>>
购物车
查看>>
python基础(一)
查看>>
UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转...
查看>>
linux 使用NSF 映射远程磁盘目录
查看>>
elasticjob 当当的分布式定时任务管理
查看>>
BZOJ 3438: 小M的作物( 最小割 )
查看>>
js性能优化-事件委托(2)
查看>>
Determine File Output Location
查看>>
51NOD 1068 Bash游戏 V3
查看>>
级联。。。
查看>>
socketserver用法列子
查看>>
网站链接被微信屏蔽拦截了怎么办?VJump帮你解除屏蔽
查看>>
SVG.text基本属性
查看>>
Sublime Text3配置Node.js开发环境
查看>>
在线编辑器的原理简单示例
查看>>
MVC弹出子页面向父页面传值
查看>>
用shell定义和访问数组
查看>>
KNN算法原理以及代码实现
查看>>