先序遍歷樹的每乙個結點,若遍歷到的結點有子結點。則交換它的兩個子結點。
1. 遞迴求解:
voidmirrorecursively(binarytreenode *pnode)
2. 非遞迴求解(借助棧)
借助於棧,先交換兩棵子樹,再求完一棵子樹的映象後在求還有一棵子樹的映象(縱向,深度優先)
voidmirrornonrecurively(binarytreenode *pnode)
if(null != pnode->left)
stacktreenode.push(pnode->left);
if(null != pnode->right)
stacktreenode.push(pnode->right);
} }
3. 非遞迴求解(借助佇列)
借助於佇列以用廣度優先的順序遍歷一遍實現逐層映象(橫向,廣度優先)
voidmirrornonrecurively (binarytreenode * root)
}
二叉樹深度求解(遞迴,非遞迴)
遞迴實現基本思想 為了求得樹的深度,可以先求左右子樹的深度,取二者較大者加1即是樹的深度,遞迴返回的條件是若節點為空,返回0 演算法 1 intfindtreedeep bintree bt 8return deep 9 非遞迴實現基本思想 受後續遍歷二叉樹思想的啟發,想到可以利用後續遍歷的方法來求...
求解二叉樹的高度(遞迴 非遞迴)
遞迴方式 遞迴方式的求解過程很簡單,只需要將問題分解。首先,遞迴出口是什麼?毫無疑問,當樹節點為空時,我們就可以結束遞迴了。那麼當前樹的高度和其左子樹及右子樹的關係是什麼呢?樹的高度,定義為從根節點到葉子節點的最長路徑 因此當前樹深應該是自身節點所佔的一層高度加上左右子樹中深的高度。因此,有一下遞迴...
二叉樹 遞迴 非遞迴
include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...