遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹
/**
* definition for a binary tree node.
* struct treenode ;
*/struct treenode*
inverttree
(struct treenode* root)
由於至少要講每乙個節點都訪問一次,才能將每乙個節點的子樹交換,所以沒有比o(n)更好的演算法了.
本方法使用了遞迴,在最壞的情況下棧內需要存放h個方法呼叫,h是樹的高度,由於h最大取值為樹的結點個數n,所以 h<=n ,即空間複雜度也為o(n).
二叉樹反轉
二叉樹反轉,遞迴實現比較簡單,只需要交換父母節點的左右子節點就行,遞迴反轉左右子節點。homebrew作者面試google時解不出這道題而被拒,本文給出c實現的二叉樹反轉,包括前中後遍歷,二叉樹的建立等。反轉 如下 void inversebtree tnode root tnode tmp roo...
leetcode 二叉樹 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...