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

數(shù)據(jù)結(jié)構(gòu)-二叉樹-二叉樹左右孩子交換(遞歸)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)-二叉樹-二叉樹左右孩子交換(遞歸)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?注:本文采用隊(duì)列和遞歸的算法進(jìn)行創(chuàng)建和層次遍歷。同時不能采用BFS和DFS,因?yàn)樾枰旬?dāng)前根節(jié)點(diǎn)的左孩、右孩勾鏈并輸入才能遞歸下一個根節(jié)點(diǎn);

隊(duì)列用于存儲此時應(yīng)該遞歸的根節(jié)點(diǎn);

格式:每一行尾不能有空格;

Description

根據(jù)輸入利用二叉鏈表創(chuàng)建二叉樹,并將所有結(jié)點(diǎn)的左右孩子交換,并輸出。

說明:

輸入的第一行為根結(jié)點(diǎn);第二行以后每行的第二元為第一元的左孩子,第三元為第一元的右孩子, 0表示空。

輸出時按結(jié)點(diǎn)層次順序輸出。

Sample Input

A

A B C

B 0 D

C 0 E

D 0 0

E 0 0

Sample Output

A C B

C E 0

B D 0

E 0 0

D 0 0

Hint
說明:輸出有換行
#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;

typedef struct BiTnode{//二叉鏈表存儲結(jié)構(gòu)
   char data;
   BiTnode *lc;
   BiTnode *rc;
}BiTnode,*BiTree;

void initTree(BiTree &T,char data='*'){//初始化樹
    T=new BiTnode;
    T->lc=NULL;
    T->rc=NULL;
    if(data=='*'){
        cin>>T->data;//先輸入根節(jié)點(diǎn)
    }
    else{
        T->data=data;
    }
}

queue<BiTree>Q;
void creatTree(BiTree &T){//遞歸創(chuàng)建二叉樹
    //不能是BFS和DFS 在遞歸前需要把當(dāng)前結(jié)點(diǎn)勾鏈并輸入左孩右孩
    //同時運(yùn)用隊(duì)列來實(shí)現(xiàn)按照層次依次訪問每一個非葉子結(jié)點(diǎn)(也就是每次遞歸的根節(jié)點(diǎn))
    if(Q.empty()) return;//遞歸的終止條件
    char ch;
    int cnt=1;//計(jì)數(shù) 1左 2右
    while(cin>>ch)//輸入此時根節(jié)點(diǎn)的左孩、右孩
    { 
	    if(T->data==ch) continue;
	    BiTnode *p=NULL;
	    if(ch!='0'){
	        initTree(p,ch);
        }
	    if(cnt==1){
            T->lc=p;
        }
        else{
            T->rc=p;
        }
	    if(p){
            Q.push(p);
        }
	    if(cnt==2) break;
	    cnt++;
	}
	Q.pop();
    creatTree(Q.front());//遞歸
}  
void Levelorder(BiTree T){//層次遍歷二叉樹
    Q.push(T);
    while(!Q.empty())//隊(duì)列不為空循環(huán)
	{
		cout<<Q.front()->data<<" "; 
		if(Q.front()->rc!=NULL){
            cout<<Q.front()->rc->data<<" "; 
            Q.push(Q.front()->rc);//右孩子進(jìn)隊(duì)
        } 
		else {
            cout<<"0"<<" ";
        }
		if(Q.front()->lc!=NULL){
            cout<<Q.front()->lc->data<<endl; 
            Q.push(Q.front()->lc);//左孩子進(jìn)隊(duì)
        } 
		else {
            cout<<"0"<<"\n";
        }
	    Q.pop();
	}
}

int main(){
	BiTree Tree;//二叉鏈表
    initTree(Tree);
    Q.push(Tree);//先把根節(jié)點(diǎn)進(jìn)隊(duì)需要滿足判斷
    creatTree(Tree);
    Levelorder(Tree);
    return 0;
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-759359.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)-二叉樹-二叉樹左右孩子交換(遞歸)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)和算法】--- 二叉樹(3)--二叉樹鏈?zhǔn)浇Y(jié)構(gòu)的實(shí)現(xiàn)(1)

    【數(shù)據(jù)結(jié)構(gòu)和算法】--- 二叉樹(3)--二叉樹鏈?zhǔn)浇Y(jié)構(gòu)的實(shí)現(xiàn)(1)

    在學(xué)習(xí)二叉樹的基本操作前,需先要創(chuàng)建一棵二叉樹,然后才能學(xué)習(xí)其相關(guān)的基本操作。由于現(xiàn)在大家對二叉樹結(jié)構(gòu)掌握還不夠深入,且為了方便后面的介紹,此處手動快速創(chuàng)建一棵簡單的二叉樹,快速進(jìn)入二叉樹操作學(xué)習(xí),等二叉樹結(jié)構(gòu)了解的差不多時,我們反過頭再來研

    2024年01月25日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹——順序結(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹——順序結(jié)構(gòu)

    由于每個節(jié)點(diǎn)都 只有一個父節(jié)點(diǎn) ,所以我們可通過雙親來表示一棵樹。具體方式通過 數(shù)組的形式 實(shí)現(xiàn)。 根節(jié)點(diǎn)的下標(biāo)為0 按照層序從上到下排序 每層從左向右遞增 表示形式: 二維數(shù)組 數(shù)據(jù)的列標(biāo)為0 ,只需確定行標(biāo),即可鎖定位置 根節(jié)點(diǎn)的父節(jié)點(diǎn)下標(biāo)為 -1 列標(biāo)為1存父節(jié)

    2024年02月02日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹——鏈?zhǔn)浇Y(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹——鏈?zhǔn)浇Y(jié)構(gòu)

    目錄 ?一、前置聲明 二、二叉樹的遍歷 2.1?前序、中序以及后序遍歷 2.2?層序遍歷 三、節(jié)點(diǎn)個數(shù)以及高度 3.1?節(jié)點(diǎn)個數(shù) 3.2?葉子節(jié)點(diǎn)個數(shù) 3.3?第k層節(jié)點(diǎn)個數(shù) 3.4?二叉樹的高度/深度 3.5?查找值為x的節(jié)點(diǎn) 四、二叉樹的創(chuàng)建和銷毀 4.1?構(gòu)建二叉樹 4.2?二叉樹銷毀 4.3?判斷二叉樹

    2024年02月16日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹鏈?zhǔn)浇Y(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹鏈?zhǔn)浇Y(jié)構(gòu)

    ??write in front?? ??所屬專欄:初階數(shù)據(jù)結(jié)構(gòu) ???博客主頁:睿睿的博客主頁 ???代碼倉庫:??VS2022_C語言倉庫 ??您的點(diǎn)贊、關(guān)注、收藏、評論,是對我最大的激勵和支持!??! 關(guān)注我,關(guān)注我,關(guān)注我 , 你們將會看到更多的優(yōu)質(zhì)內(nèi)容??! ??在之前的二叉樹的順序結(jié)

    2024年02月03日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹的介紹和二叉樹堆

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹的介紹和二叉樹堆

    ??作者簡介: 加油,旭杏,目前大二,正在學(xué)習(xí) C++ , 數(shù)據(jù)結(jié)構(gòu) 等?? ??作者主頁:加油,旭杏的主頁?? ?本文收錄在:再識C進(jìn)階的專欄?? ??代碼倉庫:旭日東升 1?? ??歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!?? ???????樹這一概念,在我們剛開始聽說的時候會覺得

    2024年01月20日
    瀏覽(34)
  • 【數(shù)據(jù)結(jié)構(gòu)】 二叉樹理論概念!一文了解二叉樹!

    【數(shù)據(jù)結(jié)構(gòu)】 二叉樹理論概念!一文了解二叉樹!

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : 數(shù)據(jù)結(jié)構(gòu)解析 ?? 莫道桑榆晚,為霞尚滿天! 什么是二叉樹?二叉樹的組成構(gòu)造是什么樣的?我們將由淺入深,循序漸進(jìn)的方式把二叉樹給搞明白,讓你徹底了解二叉樹! 樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n=0)個有限結(jié)點(diǎn)組成一

    2024年02月05日
    瀏覽(52)
  • 數(shù)據(jù)結(jié)構(gòu)之二叉樹和平衡二叉樹

    1、二叉樹: 2、平衡二叉樹:

    2024年04月17日
    瀏覽(37)
  • 深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    二叉樹(1): 深入理解數(shù)據(jù)結(jié)構(gòu)第一彈——二叉樹(1)——堆-CSDN博客 二叉樹(2): 深入理解數(shù)據(jù)結(jié)構(gòu)第二彈——二叉樹(2)——堆排序及其時間復(fù)雜度-CSDN博客 前言: 在前面我們講了堆及其應(yīng)用,幫助我們初步了解了二叉樹的一些原理,但那與真正的二叉樹仍有不同,

    2024年04月09日
    瀏覽(32)
  • 【數(shù)據(jù)結(jié)構(gòu)】樹、二叉樹的概念和二叉樹的順序結(jié)構(gòu)及實(shí)現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】樹、二叉樹的概念和二叉樹的順序結(jié)構(gòu)及實(shí)現(xiàn)

    之前我們學(xué)習(xí)了順序表、鏈表以及棧和隊(duì)列這些數(shù)據(jù)結(jié)構(gòu),但這些數(shù)據(jù)結(jié)構(gòu)都是線性的(一對一)。接下來要學(xué)習(xí) 非線性的數(shù)據(jù)結(jié)構(gòu)——樹(二叉樹) ,相比前面的,樹的結(jié)構(gòu)更加復(fù)雜,話不多說,直接進(jìn)入正題吧。 樹是一種 非線性的數(shù)據(jù)結(jié)構(gòu) ,它是 一對多(也有可能是

    2024年02月07日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)——二叉樹的鏈?zhǔn)浇Y(jié)構(gòu)

    數(shù)據(jù)結(jié)構(gòu)——二叉樹的鏈?zhǔn)浇Y(jié)構(gòu)

    ? 個人主頁 : 日刷百題 系列專欄 : 〖C語言小游戲〗〖Linux〗〖數(shù)據(jù)結(jié)構(gòu)〗 ?〖C語言〗 ?? 歡迎各位 → 點(diǎn)贊 ??+ 收藏 ??+ 留言 ??? ? 這里我們使用先序遍歷的思想來創(chuàng)建二叉樹,這里的內(nèi)容對于剛接觸二叉樹的朋友可能有些難理解,不妨先看完下面的二叉樹各種遍歷

    2024年02月05日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包