91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言二叉樹題目

發布時間:2020-05-29 14:03:37 來源:億速云 閱讀:212 作者:鴿子 欄目:編程語言

題意

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

struct Node {

int val;

Node *left;

Node *right;

Node *next;

}

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

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

示例:
c語言二叉樹題目
輸入:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":null,"right":null,"val":4},"next":null,"right":{"$id":"4","left":null,"next":null,"right":null,"val":5},"val":2},"next":null,"right":{"$id":"5","left":{"$id":"6","left":null,"next":null,"right":null,"val":6},"next":null,"right":{"$id":"7","left":null,"next":null,"right":null,"val":7},"val":3},"val":1}

輸出:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":{"$id":"4","left":null,"next":{"$id":"5","left":null,"next":{"$id":"6","left":null,"next":null,"right":null,"val":7},"right":null,"val":6},"right":null,"val":5},"right":null,"val":4},"next":{"$id":"7","left":{"$ref":"5"},"next":null,"right":{"$ref":"6"},"val":3},"right":{"$ref":"4"},"val":2},"next":null,"right":{"$ref":"7"},"val":1}

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

提示:

你只能使用常量級額外空間。

使用遞歸解題也符合要求,本題中遞歸程序占用的棧空間不算做額外的空間復雜度。

思路

題目要求使用O(1)的額外空間,所以考慮類似BFS的算法。

因為樹是完美的,那么當前這一層和上一層的關系是緊密的,體現在上一層節點cur存在next不為null那么當前層cur.left也存在next并且cur.right也存在next,可以根據示例圖理解。每一層從上一層的最左邊節點的左孩子開始遍歷。

代碼

/*

// Definition for a Node.

class Node {

    public int val;

    public Node left;

    public Node right;

    public Node next;

    public Node() {}

    public Node(int _val) {

        val = _val;

    }

    public Node(int _val, Node _left, Node _right, Node _next) {

        val = _val;

        left = _left;

        right = _right;

        next = _next;

    }

};

*/

class Solution {

    public Node connect(Node root) {

        Node pre=root;

        while(pre!=null){

            Node cur=pre;

            while(cur!=null){

                if(cur.left!=null)

                    cur.left.next=cur.right;

                if(cur.right!=null&&cur.next!=null){

                    cur.right.next=cur.next.left;

                }

                cur=cur.next;

            }

            pre=pre.left;

        }

        return root;

    }

}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太原市| 巴塘县| 平谷区| 东丽区| 建昌县| 岚皋县| 万安县| 淳安县| 阳春市| 肃宁县| 黑水县| 青河县| 嘉定区| 漳浦县| 鹤山市| 独山县| 博客| 富川| 融水| 双流县| 昌黎县| 江都市| 永康市| 万载县| 道真| 泸水县| 岳阳市| 屯留县| 克拉玛依市| 淮滨县| 肇州县| 铜川市| 罗田县| 江津市| 赣榆县| 金阳县| 蓝山县| 边坝县| 蕲春县| 枣阳市| 合川市|