中級算法之樹和圖:填充每個節點的下一個右側節點指針

給定一個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下:

struct Node {
int val;
Node *left;
Node *right;
Node *next;
}

填充它的每個 next 指針,讓這個指針指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指針設置爲 NULL。

初始狀態下,所有 next 指針都被設置爲 NULL。

示例:
在這裏插入圖片描述

解釋:給定二叉樹如圖 A 所示,你的函數應該填充它的每個 next 指針,以指向其下一個右側節點,如圖 B 所示。

提示:

你只能使用常量級額外空間。
使用遞歸解題也符合要求,本題中遞歸程序佔用的棧空間不算做額外的空間複雜度。

邏輯關係清晰,要運用已有的next

    Node* connect(Node* root) {
        if(!root) return NULL;
        if(root->left) root->left->next = root->right;
        if(root->right) root->right->next = root->next?root->next->left:NULL;
        connect(root->left);
        connect(root->right);
        return root;
    }
發佈了44 篇原創文章 · 獲贊 0 · 訪問量 1281
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章