国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷

這篇具有很好參考價(jià)值的文章主要介紹了二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

朋友們、伙計(jì)們,我們又見(jiàn)面了,本期來(lái)給大家解讀一下LeetCode中第144道二叉樹(shù)OJ題,如果看完之后對(duì)你有一定的啟發(fā),那么請(qǐng)留下你的三連,祝大家心想事成!

數(shù)據(jù)結(jié)構(gòu)與算法專(zhuān)欄:數(shù)據(jù)結(jié)構(gòu)與算法

個(gè)? 人? 主? 頁(yè)?:stackY、

C 語(yǔ) 言 專(zhuān) 欄C語(yǔ)言:從入門(mén)到精通

二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷,Leetcode刷題訓(xùn)練營(yíng),leetcode,算法,c語(yǔ)言,二叉樹(shù)

?LeetCode--144.二叉樹(shù)的前序遍歷:https://leetcode.cn/problems/binary-tree-preorder-traversal/

目錄

1.題目介紹

2.實(shí)例演示

3.解題思路

#二叉樹(shù)結(jié)點(diǎn)個(gè)數(shù)?

#將二叉樹(shù)結(jié)點(diǎn)的值保存在數(shù)組中?

完整代碼:


1.題目介紹

給你二叉樹(shù)的根節(jié)點(diǎn)?root?,返回它節(jié)點(diǎn)值的?前序?遍歷。

二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷,Leetcode刷題訓(xùn)練營(yíng),leetcode,算法,c語(yǔ)言,二叉樹(shù)

2.實(shí)例演示

二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷,Leetcode刷題訓(xùn)練營(yíng),leetcode,算法,c語(yǔ)言,二叉樹(shù)

3.解題思路

本道題的意思要將前序遍歷的結(jié)果儲(chǔ)存在一個(gè)數(shù)組中,而這個(gè)數(shù)組需要?jiǎng)討B(tài)開(kāi)辟,那么這里就牽扯到數(shù)組開(kāi)多大的空間?要想知道數(shù)組開(kāi)多大的空間那么就需要知道二叉樹(shù)有多少個(gè)結(jié)點(diǎn),因此我們首先要求出二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)。

#二叉樹(shù)結(jié)點(diǎn)個(gè)數(shù)?

關(guān)于如何求二叉樹(shù)的結(jié)點(diǎn)的個(gè)數(shù)在這篇博文中有過(guò)介紹:二叉樹(shù)的鏈?zhǔn)浇Y(jié)構(gòu)

求二叉樹(shù)結(jié)點(diǎn)個(gè)數(shù)的主要思想:左右子樹(shù)結(jié)點(diǎn)個(gè)數(shù) + 1

代碼演示:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */


//計(jì)算二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)
//節(jié)點(diǎn)個(gè)數(shù) = 左右子樹(shù)節(jié)點(diǎn)個(gè)數(shù) + 1(根節(jié)點(diǎn))
int BTreeSize(struct TreeNode* root)
{
    if(root == NULL)
    {
        return 0;
    }
    return BTreeSize(root->left) 
         + BTreeSize(root->right) + 1;
}

int* preorderTraversal(struct TreeNode* root, int* returnSize){
 
    *returnSize = BTreeSize(root);
    //創(chuàng)建數(shù)組
    //......
}

#將二叉樹(shù)結(jié)點(diǎn)的值保存在數(shù)組中?

先對(duì)二叉樹(shù)進(jìn)行前序遍歷:根節(jié)點(diǎn)、左子樹(shù)、右子樹(shù),然后將根節(jié)點(diǎn)的值保存在數(shù)組中,再進(jìn)行左右子樹(shù)的遞歸,這里要注意的是:需要從外部傳進(jìn)來(lái)一個(gè)下標(biāo)的指針,如果在函數(shù)內(nèi)部設(shè)置下標(biāo),那么每一次函數(shù)遞歸調(diào)用就會(huì)創(chuàng)建新的下標(biāo),這樣子只能保存第一個(gè)結(jié)點(diǎn),如果從外部傳的是地址,那么每一次函數(shù)遞歸調(diào)用就會(huì)去訪問(wèn)這塊地址,這樣就確保了不會(huì)重復(fù)保存。

完整代碼:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */


//計(jì)算二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)
//節(jié)點(diǎn)個(gè)數(shù) = 左右子樹(shù)節(jié)點(diǎn)個(gè)數(shù) + 1(根節(jié)點(diǎn))
int BTreeSize(struct TreeNode* root)
{
    if(root == NULL)
    {
        return 0;
    }
    return BTreeSize(root->left) 
         + BTreeSize(root->right) + 1;
}

//前序遍歷
//將前序遍歷的結(jié)果保存在一個(gè)數(shù)組里面
void _preorderTraversal(struct TreeNode* root, int* pa, int* pi)
{
    //判斷是否為空樹(shù)
    if(root == NULL)
        return;
    //若不為空則將根節(jié)點(diǎn)保存至數(shù)組中
    pa[*pi] = root->val;
    (*pi)++;

    //繼續(xù)遞歸遍歷它的左右子樹(shù)
    _preorderTraversal(root->left, pa, pi);
    _preorderTraversal(root->right, pa, pi);
}


int* preorderTraversal(struct TreeNode* root, int* returnSize){
    *returnSize = BTreeSize(root);
    //創(chuàng)建數(shù)組
    //根據(jù)二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)來(lái)創(chuàng)建數(shù)組的大小
    int* a = (int*)malloc(sizeof(int) * (*returnSize));
    //創(chuàng)建數(shù)組下標(biāo)
    int i = 0;
    _preorderTraversal(root, a, &i);
    //返回前序遍歷結(jié)果
    return a;
}

朋友們、伙計(jì)們,美好的時(shí)光總是短暫的,我們本期的的分享就到此結(jié)束,最后看完別忘了留下你們彌足珍貴的三連喔,感謝大家的支持!?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-539806.html

到了這里,關(guān)于二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包