劍指offer 學習筆記 二叉樹的映象

2021-10-03 09:07:33 字數 1896 閱讀 3242

面試題27:二叉樹的映象。輸入一棵二叉樹,該函式輸出它的映象。二叉樹的節點定義如下:

struct binarytreenode

;

依次交換每個節點的兩個子樹即可:

#include

using

namespace std;

struct binarytreenode

;binarytreenode*

constructcore

(int

* startpreorder,

int* endpreorder,

int* startinorder,

int* endinorder)

else

}int

* rootinorder = startinorder;

while

(rootinorder < endinorder &&

*rootinorder !=

*startpreorder)

if(rootinorder == endinorder &&

*rootinorder !=

*startpreorder)

int leftlength = rootinorder - startinorder;

// 左子樹長度

int* leftpreorderend = startpreorder + leftlength;

// 左子樹尾邊界

if(leftlength >0)

if(leftlength < endpreorder - startpreorder)

return root;

}binarytreenode*

construct

(int

* preorder,

int* inorder,

int length)

return

constructcore

(preorder, preorder + length -

1, inorder, inorder + length -1)

;}void

mirrorrecursively

(binarytreenode *proot)

binarytreenode* temp = proot-

>m_pleft;

proot-

>m_pleft = proot-

>m_pright;

proot-

>m_pright = temp;

mirrorrecursively

(proot-

>m_pleft)

;mirrorrecursively

(proot-

>m_pright);}

void

preorderprint

(binarytreenode* root)

cout << root-

>m_nvalue << endl;

preorderprint

(root-

>m_pleft)

;preorderprint

(root-

>m_pright)

;return;}

intmain()

;int inorder=

; binarytreenode* proot =

construct

(preorder, inorder,6)

;// 只能建立沒有重複資料的樹

mirrorrecursively

(proot)

;preorderprint

(proot)

;}

劍指offer 學習筆記 二叉樹的深度

面試題55 二叉樹的深度。1.輸入一棵二叉樹,求該樹的深度。只需遍歷整棵樹的每一條路徑找出最長的即可,以下 中的樹結構為 左子樹長度 int leftpreorderend startpreorder leftlength 左子樹先序遍歷尾邊界 if leftlength 0 if leftleng...

劍指offer 二叉樹 二叉樹搜尋樹

package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...

劍指offer 二叉樹 二叉樹的映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 51,交換左右子樹 2,遞迴交換左右子樹的左右子節點 package offertest title mirror description author 田...