t4:
二叉樹
在眾多的資料結構中,二叉樹是一種特殊而重要的結構,有著廣泛的應用。二叉樹或者是乙個節點,或者有且僅有乙個節點位二叉樹的根,其餘節點被分成兩個互不相交的子集,乙個作為左子集,另乙個作為右子集。每個子集又是乙個二叉樹。
遍歷一棵二叉樹就是按某條搜尋路徑巡訪其中每個節點,使得每個節點均被訪問一次,而且僅被訪問一次。最常用的有三種遍歷方式:
(1)前序遍歷:若二叉樹為空,則空操作;否則先訪問根節點,接著前序遍歷左子樹,最後前序遍歷右子樹。
(2)中序遍歷:若二叉樹為空,則空操作;否則先中序遍歷左子樹,接著訪問根節點,最後再中序遍歷右子樹。
(3)後序遍歷:若二叉樹為空,則空操作;否則先後序遍歷左子樹,接著後序遍歷右子樹,最後再訪問根節點。
例如圖1所示的二叉樹前序遍歷的順序是abcd,中序遍歷的順序是cbad,後序遍歷的順序是cbda。
對一棵二叉樹,如果給出前序遍歷和中序遍歷的節點訪問順序,那麼後序遍歷的順序是唯一確定的,也很方便地求出來。但如果現在只知道前序遍歷和後序遍歷的順序,中序遍歷的順序是不確定的,例如:前序遍歷的順序是abcd,而後序遍歷的順序是cbda,那麼就有兩棵二叉樹滿足這樣的順序,見圖1和圖2。
現在的問題是給定前序遍歷和後序遍歷的順序,要求出總共有多少棵不同形態的二叉樹滿足這樣的遍歷順序。
輸入整個輸入有兩行,第一行給出前序遍歷的訪問順序,第二行給出後序遍歷的訪問順序。
二叉樹的節點用乙個大寫字母表示,不會有兩個節點標上相同字母。輸入資料不包含空格,且保證至少有一棵二叉樹符合要求。
輸出輸出乙個整數,為符合要求的不同形態的二叉樹的數目。
樣例輸入
abcd
cbda
樣例輸出
2
題解:
列舉s1每兩個相鄰的字元,將其倒過來(比如bc變成cb)
如果s2裡有倒過來後的這兩個字元就ans*2
2018NOIP普及組 T4 對稱二叉樹
p5018 對稱二叉樹 題目傳送門 這是一道經典的遞迴題,千萬別被這題目給嚇到了。思路 二叉樹中的任意節點,都可能是一棵對稱二叉樹的根節點,那麼就直接列舉1 n做根就行了。從列舉的根開始,如果要生成對稱二叉樹,那左右子節點的結構及點值必須相同,接下來對於左右子節點的子節點也有相同的問題,那就是 如果...
判別二叉樹T是否為完全二叉樹
判別二叉樹t是否為完全二叉樹 定義 深度為k且含有n個結點的二叉樹,如果其每個結點都與深度為k的滿二叉樹中的編號從1到n的結點一一對應,則成為完全二叉樹。判斷條件 1.左 右子樹都是完全二叉樹 2.左子樹的高度和右子樹一樣或大1 3.若左子樹比右子樹高度大1,則右子樹必須是滿的 節點數等於2 高度 ...
19 10 30模擬測試T2二叉搜尋樹(區間DP)
經過昨天一晚上的冥思苦想以及 對四邊形不等式的研究,我終於將t2的正解打了出來。先看題 就是保證一棵樹的中序遍歷不變,讓你構造一棵樹,滿足題意。這道題可以用區間dp,令fi,jf fi,j 表示只考慮節點 i j 的答案。在 i,j 區間中列舉決策點 根節點 k,則有fi,j mi n fi k 1...