C語言遞迴之對稱二叉樹

2022-04-30 06:27:08 字數 1117 閱讀 2104

題目描述

給定乙個二叉樹,檢查它是否是映象對稱的。

示例

二叉樹[1,2,2,3,4,4,3]是對稱的。

1

/\ 2

2 / \ /\34

43

[1,2,2,null,3,null,3]則不是映象對稱的。

1

/\ 2

2\ \33

題目要求

1/**

2* definition for a binary tree node.

3* struct treenode ;8*/

910bool issymmetric(struct treenode*root)

題解

1/**

2* definition for a binary tree node.

3* struct treenode ;8*/

910bool fun(struct treenode* r1,struct treenode*r2)

1617

bool issymmetric(struct treenode*root)

題解遞迴

遞迴的難點就在於想出要遞迴什麼,經常情況是看了一下有那麼點思路,但是一寫就不會,真正想明白之後恍然大悟,還是要耐心思考。

對於此題,判斷遞迴點就需要一步一步分析:

1.判斷一棵樹是不是對稱二叉樹,首先看根節點,根節點為空則true,根節點不為空則比較其左樹和右樹,左樹右樹對稱時則為對稱二叉樹。

2.比較左樹右樹是否對稱,首先需要左樹的值和右樹的值相等,其次需要左樹的左子樹與右樹的右子樹相等且左樹的右子樹與右樹的左子樹相等,否則不對稱。

3.此時遞迴點就出現了,判斷左樹與右樹是否對稱的操作其實和判斷左樹的左子樹與右樹的右子樹是否對稱的操作相同。

4.這時就可以直接寫**了,fun(左樹, 右樹) = fun(左樹的左子樹, 右樹的右子樹) & fun(左樹的右子樹, 右樹的左子樹)。

遞迴 對稱二叉樹

原題傳送門 說點題外話,這道題是noip2019 pjt4,被稱作有史以來最簡單的t4,然而.我這個小蒟蒻當時只得了4分 直接輸出1 現在回想起來,覺得自己那時是真的智障啊,最可氣的是,這道題一讀題就可以發現結果很容易為3,哪怕完全不會,直接輸出3也明顯比直接輸出1要好啊 事實證明,直接輸出3的得分...

對稱二叉樹c 對稱的二叉樹

很簡單,關鍵還是知道怎麼樣才能判斷乙個 二叉樹是否對稱,只要採用前序 中序 後序 層次遍歷等任何一種遍歷方法,分為先左後右和先 右後左兩種方法,只要兩次結果相等就說明這棵樹是一顆對稱二叉樹。迭代版本 class solution public bool issymmetric treenode ro...

對稱二叉樹(遞迴 迭代)

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。寫乙個遞迴函式,當且僅當兩個節...