關於二叉樹定義可參考:
題目:請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。
二叉樹結點的定義如下:
struct binarytreenode
;
通過畫圖,可知二叉樹的映象如下圖所示:
根據畫圖可得到這樣的思路:先序遍歷樹的每個結點,若遍歷到的結點有子結點,則交換它的兩個子結點。
有兩種實現方法:
1.遞迴實現
void mirrorecursively(binarytreenode *pnode)
2.非遞迴實現,即使用迴圈實現
void mirrornonrecurively(binarytreenode *pnode)
if(null != pnode->left)
stacktreenode.push(pnode->left);
if(null != pnode->right)
stacktreenode.push(pnode->right);
} }
筆試面試之二叉樹的映象
輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 6 10 5 7 9 11 輸出 8 10 6 11 9 7 5 定義二元查詢樹的結點為 struct bstreenode a node in t...
leetcode之二叉樹的映象
invert binary tree invert a binary tree.4 2 7 1 3 6 9to4 7 2 9 6 3 1幾周前,我用的是遞迴解法,如下 definition for a binary tree node.struct treenode struct treenode ...
二叉樹之 二叉樹深度
二叉樹深度 獲取最大深度 public static int getmaxdepth treenode root 二叉樹寬度 使用佇列,層次遍歷二叉樹。在上一層遍歷完成後,下一層的所有節點已經放到佇列中,此時佇列中的元素個數就是下一層的寬度。以此類推,依次遍歷下一層即可求出二叉樹的最大寬度 獲取最大...