首页 > 代码库 > leetcode第一刷_Populating Next Right Pointers in Each Node
leetcode第一刷_Populating Next Right Pointers in Each Node
这道题之前没见过,一上来还真不知道怎么做。问题的限制条件,树是完全二叉树其实并不是关键,只不过是一个简化的条件而已。那关键是什么呢?如何从当前节点跳到下一个开始的节点。我的做法是,每次从一层的最左边节点开始,一层一层的走。其实只有两种形式的next指针需要我们来更新,第一种,同一个节点的左右孩子,第二种,父亲相邻时,左边父亲的右孩子和右边父亲的左孩子之间。完全二叉树的简化就体现在更新的过程,因为完全,所以有孩子肯定是双胞胎,因为完全,所以两个父亲的孩子之间关系很直接。
class Solution { public: void connect(TreeLinkNode *root) { if(root == NULL) return; TreeLinkNode *beginNode = root, *leftNode, *rightNode; while(beginNode){ leftNode = beginNode; while(leftNode&&leftNode->left){ leftNode->left->next = leftNode->right; if(leftNode->next){ rightNode = leftNode->next; leftNode->right->next = rightNode->left; } leftNode = leftNode->next; } beginNode = beginNode->left; } } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。