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

數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

???? 前言

hello hello~ ,這里是大耳朵土土垚~???? ,歡迎大家點贊????關注????收藏??????
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

??個人主頁:大耳朵土土垚的博客
?? 所屬專欄:數(shù)據(jù)結構學習筆記 、C語言系列函數(shù)實現(xiàn)
??對于數(shù)據(jù)結構順序表、鏈表、堆有疑問的都可以在上面數(shù)據(jù)結構的專欄進行學習哦~ 有問題可以寫在評論區(qū)或者私信我哦~

復習鞏固:????

在學習二叉樹基本操作前,再回顧下二叉樹的概念,二叉樹是:

  1. 空樹
  2. 非空:根節(jié)點,根節(jié)點的左子樹、根節(jié)點的右子樹組成的。
    數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸
    從概念中可以看出,二叉樹定義是遞歸式的,因此后序基本操作中基本都是按照該概念實現(xiàn)的。

一、手動創(chuàng)建一個簡單二叉樹????

在學習二叉樹的基本操作前,需先要創(chuàng)建一棵二叉樹,然后才能學習其相關的基本操作。由于現(xiàn)在大家對二叉樹結構掌握還不夠深入,為了降低大家學習成本,此處手動快速創(chuàng)建一棵簡單的二叉樹,快速進入二叉樹操作學習,等二叉樹結構了解的差不多時,我們反過頭再來研究二叉樹真正的創(chuàng)建方式。

手動創(chuàng)建簡單二叉樹代碼如下:

typedef struct BinaryTreeNode
{
	BTDataType data;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;
BTNode* BuyNode(BTDataType x)
{
	BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		return NULL;
	}
	newnode->right = NULL;
	newnode->data = x;
	newnode->left = NULL;
	return newnode;
}
BTNode* CreatBinaryTree()
{
	BTNode* node1 = BuyNode(1);
	BTNode* node2 = BuyNode(2);
	BTNode* node3 = BuyNode(3);
	BTNode* node4 = BuyNode(4);
	BTNode* node5 = BuyNode(5);
	BTNode* node6 = BuyNode(6);

	node1->left = node2;
	node1->right = node4;
	node2->left = node3;
	node4->left = node5;
	node4->right = node6;
	return node1;
}

創(chuàng)建的二叉樹邏輯結構如下圖:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

????注意:上述代碼并不是創(chuàng)建二叉樹的方式,真正創(chuàng)建二叉樹方式后序詳解重點講解。

二、二叉樹的三種遍歷??

學習二叉樹結構,最簡單的方式就是遍歷。
所謂二叉樹遍歷(Traversal)是按照某種特定的規(guī)則,依次對二叉樹中的節(jié)點進行相應的操作,并且每個節(jié)點只操作一次。訪問結點所做的操作依賴于具體的應用問題。
遍歷是二叉樹上最重要的運算之一,也是二叉樹上進行其它運算的基礎。

1.前序

前序遍歷(Preorder Traversal 亦稱先序遍歷)——訪問根結點的操作發(fā)生在遍歷其左右子樹之前。
也就是先訪問根結點在訪問左子樹右子樹,左子樹也是先訪問根結點再訪問左子樹右子樹…直到結束出現(xiàn)NULL;

前序遍歷遞歸圖解:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

????這里要注意訪問葉子結點時要將它左右也就是NULL訪問,這樣才不會出差錯。不能說它沒有左右子樹,而是它的孩子結點為NULL。

代碼如下:

// 二叉樹前序遍歷
void PreOrder(BTNode* root)
{
	if (root)//如果root為NULL就不需要進入if語句直接退出函數(shù)
	{
		printf("%d\n", root->data);
		PreOrder(root->left);
		PreOrder(root->right);
	}
}

遞歸圖解如下:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸
結果如下:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

2.中序

中序遍歷(Inorder Traversal)——訪問根結點的操作發(fā)生在遍歷其左右子樹之中(間)。
也就是先訪問左子樹再訪問根結點最后訪問右子樹,先訪問的左子樹也是先訪問其左子樹再訪問根結點最后訪問右子樹…直到遍歷完全部結點。

代碼如下:

// 二叉樹中序遍歷
void InOrder(BTNode* root)
{
	if (root)
	{
		InOrder(root->left);
		printf("%d\n", root->data);
		InOrder(root->right);
	}
}

結果如下:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

3.后序

后序遍歷(Postorder Traversal)——訪問根結點的操作發(fā)生在遍歷其左右子樹之后。
也就是先訪問左子樹再訪問右子樹最后訪問根結點,再訪問左子樹時也是按照左子樹——右子樹——根結點的順序訪問…直到遍歷整個二叉樹。

代碼如下:

// 二叉樹后序遍歷
void PostOrder(BTNode* root)
{
	if (root)
	{
		PostOrder(root->left);
		PostOrder(root->right);
		printf("%d\n", root->data);

	}
}

結果如下:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

三、小練習????

數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

解答:
數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】,數(shù)據(jù)結構,每日一函數(shù),c語言,數(shù)據(jù)結構,二叉樹,遞歸

四、結語????

??由于被訪問的結點必是某子樹的根,所以N(Node)、L(Left subtree)和R(Right subtree)又可解釋為根、根的左子樹和根的右子樹。NLR、LNR和LRN分別又稱為先根遍歷、中根遍歷和后根遍歷。

以上就是二叉樹前中后序的遍歷啦~學習它對我們后續(xù)學習二叉樹的操作有很大作用同時也幫我們復習和了解遞歸的使用,可謂一舉兩得,大家都get到了嗎, 完結撒花 ~??????????

我的博客即將同步至騰訊云開發(fā)者社區(qū),邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=2rx6jz7eu90kg文章來源地址http://www.zghlxwxcb.cn/news/detail-840336.html

到了這里,關于數(shù)據(jù)結構——二叉樹的遍歷【前序、中序、后序】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 數(shù)據(jù)結構之二叉樹構建、廣度/深度優(yōu)先(前序、中序、后序)遍歷

    數(shù)據(jù)結構之二叉樹構建、廣度/深度優(yōu)先(前序、中序、后序)遍歷

    說到樹,我們暫時忘記學習,來看一下大自然的樹: 哈哈 以上照片是自己拍的,大家湊合看看 回歸正題,那么在數(shù)據(jù)結構中,樹是什么呢,通過上面的圖片大家也可以理解 樹是一種非線性的數(shù)據(jù)結構 像這樣 ,有多個節(jié)點組成的有一定層次關系的結構,像是一顆相對于天空

    2024年02月03日
    瀏覽(21)
  • 【數(shù)據(jù)結構|二叉樹遍歷】遞歸與非遞歸實現(xiàn)前序遍歷、中序遍歷、后序遍歷

    【數(shù)據(jù)結構|二叉樹遍歷】遞歸與非遞歸實現(xiàn)前序遍歷、中序遍歷、后序遍歷

    遞歸與非遞歸實現(xiàn)二叉樹的前序遍歷、中序遍歷、后序遍歷。 二叉樹圖 定義 前序遍歷(Preorder Traversal): 前序遍歷的順序是先訪問根節(jié)點,然后按照先左后右的順序訪問子節(jié)點。對于上面的二叉樹,前序遍歷的結果是:4 - 2 - 1 - 3 - 6 - 5 - 7。 中序遍歷(Inorder Traversal): 中

    2024年02月14日
    瀏覽(16)
  • 【數(shù)據(jù)結構】二叉樹的遍歷

    【數(shù)據(jù)結構】二叉樹的遍歷

    ??Yan-英杰的主頁 悟已往之不諫 知來者之可追 ?? C++程序員,2024屆電子信息研究生 目錄 前序、中序以及后序遍歷 前序遍歷 中序遍歷 后序遍歷 ???????? ????????學習二叉樹結構,最簡單的方式就是遍歷。所謂 二叉樹遍歷 (Traversal) 是按照某種特定的規(guī)則,依次對二叉

    2023年04月23日
    瀏覽(24)
  • 數(shù)據(jù)結構 | 二叉樹的各種遍歷

    數(shù)據(jù)結構 | 二叉樹的各種遍歷

    我們本章來實現(xiàn)二叉樹的這些功能 Tree.h 我們先來幾個簡單的 直接手動個創(chuàng)建即可,很簡單~~ 這里也是很簡單,也可以看做下圖這樣遍歷,或者畫一下遞歸展開圖 我們這里看一下遞歸展開圖 為空就返回0 不是空,是葉子,返回1 不是空,也不是葉子,就遞歸左子樹和右子樹

    2024年02月04日
    瀏覽(24)
  • 【數(shù)據(jù)結構】二叉樹的層序遍歷

    【數(shù)據(jù)結構】二叉樹的層序遍歷

    當我們面對一個樹結構時,常常需要對其進行遍歷以獲取其中的節(jié)點信息。其中一種常用的遍歷方式是層序遍歷,也稱為廣度優(yōu)先搜索(BFS)。本篇博客將詳細介紹層序遍歷的原理和實現(xiàn)方法。 層序遍歷以樹的根節(jié)點開始,按照從上到下、從左到右的順序逐層遍歷樹中的節(jié)點

    2024年02月03日
    瀏覽(33)
  • 【數(shù)據(jù)結構】二叉樹的三種遍歷

    【數(shù)據(jù)結構】二叉樹的三種遍歷

    目錄 一、數(shù)據(jù)結構 二、二叉樹 三、如何遍歷二叉樹 數(shù)據(jù)結構是計算機科學中用于組織和存儲數(shù)據(jù)的方式。它定義了數(shù)據(jù)元素之間的關系以及對數(shù)據(jù)元素的操作。常見的數(shù)據(jù)結構包括數(shù)組、鏈表、棧、隊列、樹、圖等。 數(shù)組是一種線性數(shù)據(jù)結構,它使用連續(xù)的內存空間存儲

    2024年02月21日
    瀏覽(21)
  • go數(shù)據(jù)結構(二叉樹的遍歷)

    go數(shù)據(jù)結構(二叉樹的遍歷)

    ? 用數(shù)組來存儲二叉樹如何遍歷的呢? 如果父節(jié)點的數(shù)組下表是i,那么它的左孩子就是i * 2 + 1,右孩子就是 i * 2 + 2。 ?二叉樹的遍歷方式: 二叉樹有 三種基本遍歷方式 ,分別是 前序遍歷、中序遍歷和后序遍歷 。遍歷的原理是從根節(jié)點開始,按照特定方式遞歸遍歷左子樹

    2023年04月15日
    瀏覽(21)
  • Java數(shù)據(jù)結構——二叉樹的遍歷

    Java數(shù)據(jù)結構——二叉樹的遍歷

    ?作者:敲代碼の流川楓 博客主頁:流川楓的博客 專欄:和我一起學java 語錄:Stay hungry stay foolish 工欲善其事必先利其器,給大家介紹一款超牛的斬獲大廠offer利器——??途W(wǎng) 點擊注冊和我一起刷題 文章目錄 1.創(chuàng)建二叉樹 2.二叉樹的三種遍歷方式 3.代碼實現(xiàn)遍歷 前序遍歷

    2024年01月22日
    瀏覽(20)
  • 數(shù)據(jù)結構——二叉樹的遍歷與應用

    數(shù)據(jù)結構——二叉樹的遍歷與應用

    目錄 一.前言 二. 二叉樹鏈式結構的實現(xiàn) 2.1 前置說明 2.2 二叉樹的遍歷 2.2.1 前序、中序以及后序遍歷 前序遍歷: 中序遍歷遞歸圖: 后序遍歷: 2.3節(jié)點個數(shù) 2.4葉子節(jié)點個數(shù) 2.5第K層的節(jié)點個數(shù) 2.6 二叉樹查找值為x的節(jié)點 2.7 二叉樹的銷毀 三.結語 ? 大家好久不見,放寒假了咱

    2024年01月19日
    瀏覽(47)
  • 數(shù)據(jù)結構與算法-二叉樹的遍歷

    數(shù)據(jù)結構與算法-二叉樹的遍歷

    ?? “少年沒有烏托邦,心向遠方自明朗!” 二叉樹的遍歷是按照一定次序訪問二叉樹中的所有結點,且每個結點僅被訪問一次的過程。遍歷線性結構是容易解決的,而二叉樹的結構是非線性結構,需要尋找規(guī)律,使二叉樹的結點排列在一個線性隊列上,便于遍歷。 由二叉樹

    2024年02月08日
    瀏覽(35)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包