当前位置: 代码迷 >> 综合 >> 116. Populating Next Right Pointers in Each Node
  详细解决方案

116. Populating Next Right Pointers in Each Node

热度:5   发布时间:2023-12-08 06:53:35.0

题意:

将一颗二叉树的节点使用每个节点中的next指针将每行从左向右连接起来。

思路:层次遍历

每次加入链表同时加入对应的行号,若前一节点与当前节点行号不同则前一节点指向NULL。

struct Node {
    TreeLinkNode *TLN;int L;Node(TreeLinkNode *T, int i) :TLN(T), L(i) {
    };
};void connect(TreeLinkNode *root) {
    if (!root)return;root->next = NULL;list<Node> s;Node p(root, 1);if (root->left)s.push_back(Node(root->left, 2));if (root->right)s.push_back(Node(root->right, 2));Node back = p;while (!s.empty()) {
    p = s.front();s.pop_front();if (p.L == back.L)back.TLN->next = p.TLN;else back.TLN->next = NULL;if (p.TLN->left)s.push_back(Node(p.TLN->left, p.L + 1));if (p.TLN->right)s.push_back(Node(p.TLN->right, p.L + 1));back = p;}
}
  相关解决方案