大家好,感謝邀請,今天來為大家分享一下二叉樹的三種遍歷圖解的問題,以及和二叉樹三種遍歷技巧的一些困惑,大家要是還不太明白的話,也沒有關系,因為接下來將為大家分享,希望可以幫助到大家,解決大家的問題,下面就開始吧!
中序遍歷結果為abc的二叉樹有幾種
總共有3種。分別為左a中b右c
順序存儲的二叉樹是如何創建和遍歷的
一、首先,簡單介紹一下什么是“二叉樹”
二叉樹是n個結點的有限集合,它的定義具有遞歸性:
(1)當n=0時,為空樹;
(2)當n=1時,只有一個結點,該節點稱為根結點;
(3)當n>1時,除了根結點外的其他節點可分為互不相交的兩個子集,稱為左右子樹,且左右子樹本質上也都是二叉樹。
圖1二叉樹
根據二叉樹的結構和定義,可總結出二叉樹的特點:
(1)非空二叉樹的第i層最多有2∧(i-1)個結點;
(2)深度為k的二叉樹最多有2∧k-1個結點
二叉樹的存儲結構二叉樹是非線性的結構,其每個結點最多有一個“前驅”,但可以有多個“后繼”。它可以采用順序存儲結構和鏈式存儲結構。
1、順序存儲結構
二叉樹的順序存儲,就是用一組連續的存儲單元存放二叉樹的結點。必須把二叉樹的所有結點安排成一個恰當的序列結點在這個序列中的相互位置能反映出結點之間的邏輯關系。
要介紹順序存儲結構,首先要了解一個概念——完全二叉樹。如果深度為k,有n個結點的二叉樹,當k與n滿足2∧(k-1)≦n≦2∧k-1時,該二叉樹稱為完全二叉樹。
對于一個二叉樹,如果其不是一個完全二叉樹,則首先增添一些并不存在的空結點,使之稱為一個完全二叉樹的形式,然后按照從上到下、從左到右的順序將樹中的結點存儲在數組中。
以圖1為例,其補成完全二叉樹如圖2所示。
圖2補完后的二叉樹
其順序存儲狀態為:
ABCDE∧H∧∧FGI顯然,當一個非完全二叉樹采用順序存儲結構時,由于需要增加許多空結點,因此會造成空間的大量浪費。
2、鏈式存儲結構
二叉樹的鏈式存儲結構是指用鏈來表示二叉樹結點之間的邏輯關系。
通常的方法是鏈表中的每個結點由3個域組成:
左指針域+數據域+右指針域即:Lchild+data+Rchild其中:data域存放結點的數據信息;Lchild和Rchild分別存放左、右支的指針,當某一支不存在時,相應的指針域為空(用符號∧國NULL表示)。如圖1中的c結點,因其左支不存在,因此其Lchild的值為NULL。
三、二叉樹的遍歷算法二叉樹常用的遍歷方式有:前序遍歷、中序遍歷、后續遍歷以及層序遍歷。
1、前序遍歷
先訪問根結點,然后是左子樹,最后是右子樹。
圖1的前序遍歷結果為:
A->B->D->E->F->G->C->H->I
2、中序遍歷
先訪問左子樹,然后是根結點,最后是右子樹。
圖1的中序遍歷結果為:
D->B->F->E->G->A->C->I->H
3、后續遍歷
先訪問左子樹,然后是右子樹,最后是根結點。
圖1的后續遍歷結果為:
D->>F->G->E->I->H->B->C->A
4、層序遍歷
從頂層的結點開始,從左向右依次遍歷,之后轉到第二層,繼續從左向右遍歷,……,直到所有的結點都遍歷完成。
圖1的層序遍歷結果為:
A->B->C->D->E->H->F->G->I
已知二叉樹的中序遍歷結果為DBHEAFICG,后序遍歷結果為DHEBIFGCA,試畫出該二叉樹,并求其前序遍列序列
--------------------A
---------------B----------C
----------D---------E--F--------G
------------------H-------I
前序為ABDEHCFIG
什么是先、中、后根遍歷什么是左子樹、右子樹和二叉樹
比如這個樹:A/\BC先序就是先讀根結點,在按左右子樹順序遍歷。即ABC中序就是先左,再根,再右,即BAC后續就是先左右子樹,最后再讀根節點,即BCA左子樹就是以當前節點看,它的左子節點那一分支的子樹,該子樹以當前節點左子節點為根。
右子樹就是以當前節點看,它的右子節點那一分支的子樹,該子樹以當前節點右子節點為根。左右子樹只在二叉樹中有意義,因為二叉樹非左即右。二叉樹是指,一棵樹的每個節點,最多有2個子節點的樹,即每個節點可以有0,1,或2個孩子
二叉樹的遍歷結果是唯一的嗎
如果是同一棵二叉樹,如果用相同的遍歷方式,結果肯定唯一。但如果每次遍歷方式不同,一會先序一會后序,結果可能就不同了。
二叉樹的三種遍歷圖解和二叉樹三種遍歷技巧的問題分享結束啦,以上的文章解決了您的問題嗎?歡迎您下次再來哦!