[leetcode]Populating Next Right Pointers in Each Node II
2014-01-15 17:15
453 查看
1 /\ 23 /\\ 457
1->NULL /\ 2->3->NULL /\\ 4->5->7->NULL 用O(1)的空间 那就利用next节点,一层一层的来遍历好了 首先是root,我们把它的left和right连起来 然后root切换到下一层 然后遍历下一层的每个节点(因为next连了的 再分别把他们的left,right什么的连起来 用两个变量就ok了 一个prev记录当前层前一节点是啥(用来连接的 一个next记录下一层的开始(用户切换到下一层
/** *Definitionforbinarytreewithnextpointer. *structTreeLinkNode{ *intval; *TreeLinkNode*left,*right,*next; *TreeLinkNode(intx):val(x),left(NULL),right(NULL),next(NULL){} *}; */ classSolution{ public: voidconnect(TreeLinkNode*root){ TreeLinkNode*prev=nullptr; TreeLinkNode*next=nullptr; while(root){ prev=nullptr; next=nullptr; //if(next==nullptr)next=root->left?root->left:root->right; for(;root;root=root->next){ if(next==nullptr)next=root->left?root->left:root->right; if(root->left){ if(prev)prev->next=root->left; prev=root->left; } if(root->right){ if(prev)prev->next=root->right; prev=root->right; } } root=next; } } };
注释的那一句,开始一位本来是一样的嘛,但是仔细一想,我第一个left可能是空啊,当前层的第一个是叶子节点,但是他的兄弟不是啊
所以要写到循环里面,找到第一个有left或者right的节点,然后把left或者right(left优先)赋值给next
相关文章推荐
- [leetcode] Populating Next Right Pointers in Each Node II
- [LeetCode#117]Populating Next Right Pointers in Each Node II
- Leetcode 之Populating Next Right Pointers in Each Node II(51)
- LeetCode 35 Populating Next Right Pointers in Each Node II
- 【leetcode】Populating Next Right Pointers in Each Node II
- [LeetCode]题解(python):117-Populating Next Right Pointers in Each Node II
- leetcode第一刷_Populating Next Right Pointers in Each Node II
- [leetcode]Populating Next Right Pointers in Each Node II
- LeetCode 117 Populating Next Right Pointers in Each Node II (链表 层次遍历 推荐)
- 【leetcode】Populating Next Right Pointers in Each Node I & II
- [LeetCode] Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node II
- LeetCode刷题笔录Populating Next Right Pointers in Each Node II
- Leetcode Populating Next Right Pointers in Each Node II
- Populating Next Right Pointers in Each Node II [Leetcode]
- 【leetcode】Populating Next Right Pointers in Each Node I & II(middle)
- leetcode--Populating Next Right Pointers in Each Node II
- [LeetCode][Java] Populating Next Right Pointers in Each Node II
- leetcode之Populating Next Right Pointers in Each Node II
- LeetCode "Populating Next Right Pointers in Each Node II"