C 反轉二叉樹 映象

2021-08-21 05:07:44 字數 903 閱讀 5835

對於樹這種結構,我們經常採用的策略是使用遞迴的方式,在這裡,我們也使用遞迴來解決這個問題。

遞迴演算法步驟:

1、對二叉樹的左子樹進行翻轉

2、對二叉樹的右子樹進行翻轉

3、將左右子樹的根節點進行交換(不用考慮原二叉樹的根節點,因為原二叉樹的根節點在翻轉前後沒有改變)

核心**如下:

binarytreenode * reverbt(binarytreenode *mybt)//反轉二叉樹 

程式執行完整**:

#include#includeusing namespace std;

struct binarytreenode;

void addbtnode(binarytreenode **mybt,int val);//新增節點,滿足每個父親節點大於左邊的,小於右邊的

void levels_showbt(binarytreenode *mybt);//層次遍歷,利用佇列實現

binarytreenode * reverbt(binarytreenode *mybt);//反轉二叉樹,通過遞迴實現

int main()

void addbtnode(binarytreenode **mybt,int val)

if(val == (*mybt)->value)

else if(val < (*mybt)->value)

else }

void levels_showbt(binarytreenode *mybt)

cout執行結果如下:

LeetCode (二叉樹)反轉二叉樹

遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...

二叉樹反轉

二叉樹反轉,遞迴實現比較簡單,只需要交換父母節點的左右子節點就行,遞迴反轉左右子節點。homebrew作者面試google時解不出這道題而被拒,本文給出c實現的二叉樹反轉,包括前中後遍歷,二叉樹的建立等。反轉 如下 void inversebtree tnode root tnode tmp roo...

映象二叉樹

映象二叉樹與二叉樹的區別是左右孩子對於根節點的相對大小剛好相反不用建立映象樹,通過對原樹的映象便歷,即可得到所需的東西。後序 樹 lr根,映象 rl根。如果創立映象二叉樹,insert 改一下即可,這樣可以把preordermirror 等去掉。對於遍歷後的排序放到vector陣列裡便於比較,而且進...