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

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

Q: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

A: recursive.

树的问题优先考虑用递归解决。

void combine(TreeLinkNode* leftRoot,TreeLinkNode* rightRoot)    {        if(!leftRoot&&!rightRoot)            return;        leftRoot->next = rightRoot;        TreeLinkNode *it1,*it2;        for(it1=leftRoot->right,it2=rightRoot->left;it1&&it2;it1 = it1->right,it2 = it2->left)            it1->next = it2;       }        void connect(TreeLinkNode *root) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(!root)            return;        root->next = NULL;        connect(root->left);        connect(root->right);        combine(root->left,root->right);            }

  

更简单的方法。。之前没想到,按原先的想法话,有些结点重复遍历。以下的方法,将tree一层一层来看待,一层一层链接,结点只遍历一次。

void connect(TreeLinkNode *root) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(!root||(!root->left&&!root->right))            return;        root->left->next = root->right;        if(root->next)            root->right->next = root->next->left;        connect(root->left);        connect(root->right);            }

  

转载于:https://www.cnblogs.com/summer-zhou/p/3140480.html

你可能感兴趣的文章
P1305-新二叉树
查看>>
第24章 项目5:虚拟茶话会
查看>>
python 读 xlsx
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
3.Compound data types
查看>>
USACO Arithmetic Progressions 【构造等差数列】
查看>>
测试Writer
查看>>
caioj1441:第k小的数Ⅰ
查看>>
Kattis之旅——Eight Queens
查看>>
小程序如何封装自定义组件(Toast)
查看>>
VS Code + Anaconda打造舒适的Python环境
查看>>
3.PHP 教程_PHP 语法
查看>>
readonly, const, static, static readonly 关键字实例说明
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
6.1.2.10 超链接美化
查看>>
常用mac/unix/linux命令
查看>>
MongoDB Limit与Skip方法-7
查看>>
POJ1664|DFS水题
查看>>
[php]http的状态码
查看>>