二叉樹的概念 演算法簡介及樹的平衡

2022-09-15 12:57:13 字數 1546 閱讀 5428

在電腦科學中,樹由稱為結點的元素按照層次結構的方式組織而成。層次結構最頂端的結點稱為根。與根結點直接相連的結點稱為根的子結點,通常子結點本身也有屬於它們自己的子結點。除了根結點外,在這個層次體系中的每個結點都有唯一的父結點,也就是與其直接相連的上級結點。

乙個節點擁有多少個子節點取決於樹的型別,這個量值稱為樹的的分支因子,它決定了當插入結點時樹的分支擴充套件的速度。

二叉樹是一種相對簡單但功能強大的樹,其樹的分支因子值為2。

二叉樹是一種將結點按照層次結構組織起來的資料結構,每個結點最多只有兩個與它直接相關聯的子結點。直接連線在結點下方的那個結點稱為子結點,而與每個子結點直接相連的上方結點稱為父結點。結點也有兄弟、子孫和祖先。乙個結點的兄弟結點是它的父親結點的其他子結點。乙個結點的子孫結點是其所有分支下的結點。而結點的祖先結點則是在該結點與根結點之間路徑上的所有結點。

二叉樹中的每乙個結點都包含3部分:乙個資料成員和左右兩個指標。

通過這種3個成員的結構體,將每個結點的左右指標分別指向該結點的子結點,以此來構建一棵二叉樹。如果某個結點沒有對應的左子結點或右子結點,就將相應的指標設定為null。這種方法便於標識出乙個分支的結束。

樹的分支是一系列的結點,從根結點開始到某個葉子結點結束。

葉子結點位於樹的邊緣,且沒有子結點。多顆樹組成的集合稱為森林。

1、先序遍歷

給定一顆樹,按照先序遍歷的方式,首先訪問它的根結點,然後是左子結點,最後是右子結點。按照從左到右的方式依次遍歷各個結點,以相同的方式將左子結點和右子結點當做新的子樹的根。

先序遍歷是按照深度優先的方式遍歷結點的。

2、中序遍歷

給定一顆樹,按照中序遍歷的方式,首先訪問左子結點,然後是根結點,最後是右子結點。按照從左到右的順序依次訪問各個結點,以相同的方式將左子結點和右子結點當做新的子樹的根。

3、後序遍歷

給定一顆樹,按照後序遍歷的方式,首先訪問左子結點,然後是右子結點,最後是根結點。按照從左到右的順序依次訪問各個結點,以相同的方式將左子結點和右子結點當做新的子樹的根。

4、層級遍歷

要用層級遍歷周遊一顆樹,首先訪問樹的根,然後依次向下層處理,按照從左到右的順序訪問每層的結點。層級遍歷運用了廣度優先的策略。

對於給定數量的結點,保證樹的高度盡可能的短的過程叫做樹的平衡。這意味著,在結點加入下一層之前必須保證本層結點滿額。正式的說法是,如果滿足樹的所有葉子節點都在同一層上,或者所有葉子結點都在最後兩層上,且倒數第二層是滿的,則這顆樹是平衡的。

如果一顆平衡樹最後一層的所有葉子結點都在最靠左的位置上,則稱這顆樹是左平衡的。可以利用左平衡二叉樹來幫助實現堆和優先順序佇列。

平衡二叉樹例題 平衡二叉樹

acwing 72.平衡二叉樹 思路一 求每個節點的左右子樹深度,根據深度差判斷,直到葉子節點結束,效率不夠高,每個節點都要用兩次計算深度的遞迴函式 思路二 從葉子節點開始,計算深度差,一旦有深度差大於1的,就直接返回0,也不用管上面的深度是不是正確了,畢竟我們只需要true和false兩種狀態,省...

演算法 平衡二叉樹

題目描述 給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回 true 示例 2 給定二叉樹 1,2,2,3,3,nu...

二叉樹 平衡二叉樹

1.題目 給定乙個二叉樹,判斷這棵二叉樹是否是高度平衡的二叉樹 平衡二叉樹 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1 2.題目分析 1 如果乙個節點的兩個子樹的深度之差超過1,則不是平衡二叉樹 2 如果乙個節點的兩個子樹的深度之差不超過1,則是平衡二叉樹 3.程式分析 1 若這棵二...