C 筆試題之二叉樹的映象

2021-08-15 12:25:29 字數 668 閱讀 7789

關於二叉樹定義可參考:

題目:請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。

二叉樹結點的定義如下:

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 二叉樹寬度 使用佇列,層次遍歷二叉樹。在上一層遍歷完成後,下一層的所有節點已經放到佇列中,此時佇列中的元素個數就是下一層的寬度。以此類推,依次遍歷下一層即可求出二叉樹的最大寬度 獲取最大...