輸出單層結點

題目描述

對於一棵二叉樹,請設計一個算法,創建含有某一深度上所有結點的鏈表。

給定二叉樹的根結點指針TreeNode* root,以及鏈表上結點的深度,請返回一個鏈表ListNode,代表該深度上所有結點的值,請按樹上從左往右的順序鏈接,保證深度不超過樹的高度,樹上結點的值爲非負整數且不超過100000。

錯在了忘記設置另一個結點來保存頭節點了。即代碼中head,直接返回了node。

 

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class TreeLevel {
public:
    ListNode* head = new ListNode(0);
    ListNode* node = head;
    ListNode* getTreeLevel(TreeNode* root, int dep) {
        // write code here
        fun(root, 1, dep);
        ListNode *temp = head;
        head = head ->next;
        delete temp;
        return head;
    }
    
    void fun(TreeNode* root, int cur, int dep)
    {
        if(root == nullptr)
            return;
        if(cur == dep)
        {
            node ->next = new ListNode(root ->val);
            node = node ->next;
            return;
        }
        if(root ->left)
            fun(root ->left, cur + 1, dep);
        if(root ->right)
            fun(root ->right, cur + 1, dep);
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章