LeetCode116 Populating Next Right Pointers in Each Node
2016-01-03 16:24
459 查看
题目链接:
https://leetcode.com/problems/populating-next-right-pointers-in-each-node/题目描述:
给一个满二叉树。树的结构。
struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }
每一个节点的next初始都为空
把 1 / \ 2 3 / \ / \ 4 5 6 7 变为 1 -> NULL / \ 2 -> 3 -> NULL / \ / \ 4->5->6->7 -> NULL
题目分析:
题目要求的是空间复杂度为O(1)。所以利用队列进行广搜是不行的。我们可以利用树结构中的next。用一个外循环控制层,外循环实现每层的开始,然而用next可以遍历每一层的所有节点,在遍历那一层节点时,要把下一层的节点next链好。
主要思路是,假设root指的是2。
root->left->next=root->right; root->right->next=root->next->left;
代码:
class Solution { public: void connect(TreeLinkNode *root) { while(root!=NULL && root->left!=NULL){ TreeLinkNode* ptr=root; while(ptr!=NULL){ ptr->left->next=ptr->right; if(ptr->next!=NULL){ ptr->right->next=ptr->next->left; } ptr=ptr->next; } root=root->left; } } };
相关文章推荐
- C#实现获取系统目录并以Tree树叉显示的方法
- C语言实现输入一颗二元查找树并将该树转换为它的镜像
- 纯jsp打造无限层次的树代码
- php遍历树的常用方法汇总
- PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
- PHP生成树的方法
- Java Swing中的表格(JTable)和树(JTree)组件使用实例
- python数据结构树和二叉树简介
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- B+树到MySQL之innoDB
- ExtJS 4 树
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum