257. Binary Tree Paths

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

//回溯法
//http://www.cnblogs.com/zhanghaiba/p/3536534.html

//struct ListNode
//{
//    int val;
//    struct ListNode * next;
//};

//求出一個(gè)二叉樹(shù)中一共有多少個(gè)葉子節(jié)點(diǎn)纹磺,即路徑的數(shù)目
int getPaths(struct TreeNode * root)
{
    int left=0,right=0;
    if(root->left==NULL&&root->right==NULL)
    {
        return 1;
    }
    if(root->left!=NULL)
    {
        left=getPaths(root->left);
    }
    if(root->right!=NULL)
    {
        right=getPaths(root->right);
    }
    return left+right;
}

//將整型轉(zhuǎn)換為字符串斗忌,其中需要考慮到負(fù)數(shù)的情況聪蘸,此部分代碼有優(yōu)化空間
char * intToString(int num)
{
    int i=0,l=0;
    int temp=0;
    char * result;
    char * pre;//返回字符串前綴嘲恍,用來(lái)存儲(chǔ)符號(hào)
    int flag=0;
    
    if(num==0)
    {
        return "0";
    }
    
    if(num<0)
    {
        temp=abs(num);
        num=temp;
        pre=malloc(sizeof(char)*2);
        pre[0]='-';
        pre[1]='\0';
    }
    else
    {
        temp=num;
        pre=malloc(sizeof(char));
        pre[0]='\0';
    }
    
    while(temp!=0)
    {
        l++;
        temp=temp/10;
    }
    result=malloc(sizeof(char)*(l+1));
    result[l]='\0';
    
    for(i=l-1;i>=0;i--)
    {
        result[i]=(char)((num%10)+0x30);
        num=num/10;
    }
    
    strcat(pre,result);
    
    return pre;
}

//將鏈表轉(zhuǎn)換成字符串状您,中間用“->”連接
char * listNodeToString(struct ListNode * head)
{
    char * result=NULL;
    char * temp;
    int aa=0;
    result=malloc(sizeof(char));
    result[0]='\0';
    while(head!=NULL)
    {
        aa=head->val;
        temp=intToString(aa);
        strcat(result,temp);
        head=head->next;
        if(head!=NULL)
        {
            strcat(result,"->");
        }
    }
    return result;
}

int count=0;

void binaryTreePathOut(struct TreeNode * root,char ** result,struct ListNode * head,struct ListNode * location)
{
    location->val=root->val;
    location->next=NULL;
    if(root->left==NULL&&root->right==NULL)
    {
        //說(shuō)明到了葉子節(jié)點(diǎn)
        result[count]=malloc(sizeof(char));
        result[count][0]='\0';
        strcat(result[count],listNodeToString(head));
        count++;
        return;
    }
    location->next=malloc(sizeof(struct ListNode));
    location->next->next=NULL;
    if(root->left!=NULL)
    {
        binaryTreePathOut(root->left,result,head,location->next);
    }
    if(root->right!=NULL)
    {
        binaryTreePathOut(root->right,result,head,location->next);
    }
}

char** binaryTreePaths(struct TreeNode* root, int* returnSize) {
    

    struct ListNode * head;
    struct ListNode * location;
    char ** result;
    char * str;
    
    if(root==NULL)
    {
        return NULL;
    }
    
    //printf(intToString(-1234));
    //return NULL;
    count=0;
    
    *returnSize=getPaths(root);
    
    result=(char **)malloc(sizeof(char*)*(*returnSize));
    head=malloc(sizeof(struct ListNode));
    location=head;
    
    binaryTreePathOut(root,result,head,location);
    
    free(head);
    
    return result;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枢舶,一起剝皮案震驚了整個(gè)濱河市涂邀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侍芝,老刑警劉巖研铆,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異州叠,居然都是意外死亡棵红,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門咧栗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逆甜,“玉大人,你說(shuō)我怎么就攤上這事致板〗簧罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵斟或,是天一觀的道長(zhǎng)素征。 經(jīng)常有香客問(wèn)我,道長(zhǎng)萝挤,這世上最難降的妖魔是什么御毅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮怜珍,結(jié)果婚禮上端蛆,老公的妹妹穿的比我還像新娘。我一直安慰自己酥泛,他們只是感情好今豆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布侈沪。 她就那樣靜靜地躺著,像睡著了一般晚凿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘦馍,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天歼秽,我揣著相機(jī)與錄音,去河邊找鬼情组。 笑死燥筷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的院崇。 我是一名探鬼主播肆氓,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼底瓣!你這毒婦竟也來(lái)了谢揪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捐凭,失蹤者是張志新(化名)和其女友劉穎拨扶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體茁肠,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡患民,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垦梆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匹颤。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖托猩,靈堂內(nèi)的尸體忽然破棺而出印蓖,到底是詐尸還是另有隱情,我是刑警寧澤京腥,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布另伍,位于F島的核電站,受9級(jí)特大地震影響绞旅,放射性物質(zhì)發(fā)生泄漏摆尝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一因悲、第九天 我趴在偏房一處隱蔽的房頂上張望堕汞。 院中可真熱鬧,春花似錦晃琳、人聲如沸讯检。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)人灼。三九已至围段,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間投放,已是汗流浹背奈泪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灸芳,地道東北人涝桅。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像烙样,于是被迫代替她去往敵國(guó)和親冯遂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 題目257. Binary Tree Paths Given a binary tree, return all ...
    evil_ice閱讀 207評(píng)論 0 0
  • 1.描述 Given a binary tree, return all root-to-leaf paths.F...
    YellowLayne閱讀 90評(píng)論 0 0
  • 原題鏈接:Binary Tree Paths 一道新題谒获,我想了好久也不會(huì)蛤肌。。批狱。TnT以下代碼是在Leetcode官...
    Closears閱讀 896評(píng)論 0 1
  • 原題 給一棵二叉樹(shù)寻定,找出從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的所有路徑。 樣例給出下面這棵二叉樹(shù): 所有根到葉子的路徑為: 解題思路...
    Jason_Yuan閱讀 617評(píng)論 0 0
  • Given a binary tree, return all root-to-leaf paths. For e...
    a_void閱讀 88評(píng)論 0 0