樹 二叉樹的轉殖 比較和相加

2022-08-18 00:57:08 字數 2718 閱讀 1837

1,二叉樹的轉殖操作:

1,sharedpointer< btree> clone() const:

1,轉殖當前樹的乙份拷貝;

2,返回值為堆空間中的一棵新二叉樹(與當前樹相等):

1,儲存資料元素,樹的屬性一模一樣;

2,二叉樹的轉殖的實現:

1,定義功能:clone(node)

1,拷貝 node 為根結點的二叉樹(資料元素在對應位置相等);

2,功能函式**實現:

1

/*實現遞迴轉殖函式,這個函式實現了結點之間的鏈結

*/2 btreenode* clone(btreenode* node) const320

21if( ret->right != null ) //

右子樹不為空,指定父子關係

2225}26

else

2730}31

32return

ret;

33 }

3,轉殖成員函式**實現:

1

/*轉殖乙個二叉樹

*/2 sharedpointer< btree> clone() const310

else

1114

15return

ret;

16 }

3,二叉樹比較操作的定義:

1,判斷兩棵二叉樹中的資料元素是否對應相等(遞迴的實現):

1,bool operator == (const btree& btree)

2,bool operator != (const btree& btree)

1,二叉樹的比較是遞迴進行的,因此要定義具體的相等功能;

4,二叉樹的比較的實現:

1,定義功能:equal(lh, rh)

1,判斷 lh 為根結點的二叉樹與 rh 為根結點的二叉樹是否相等;

2,功能函式**實現:

1

/*實現兩顆二叉樹是否相等的遞迴功能函式,引數為兩個根結點*/2

bool equal(btreenode* lh, btreenode* rh) const38

else

if( (lh != null) && (rh !=null) )

9

12else

1316 }

3,相等和不等操作符過載的**實現:

1

/*兩個二叉樹相等 */2

bool

operator == (const btree&btree)36

7/*兩顆二叉樹不相等 */8

bool

operator != (const btree&btree)

9

5,二叉樹的相加操作:

1,將當前二叉樹與引數 btree 中的資料元素在對應位置處相加;

2,返回值(相加的結果)為堆空間中的一棵新二叉樹;

6,二叉樹加法的實現:

1,定義功能:add(lh, rh)

1,將 lh 為根結點的二叉樹與 rh 為根結點的二叉樹相加;

2,前兩中情況剛好對應了小樹和大樹相加中,小樹部分為空、大樹部分不為空的情形;

2,功能函式**實現:

1

/*兩顆二叉樹相加的功能函式

*/2 btreenode* add(btreenode* lh, btreenode* rh) const310

else

if( (lh != null) && (rh ==null) )

1114

else

if( (lh != null) && (rh !=null) )

1528

29if( ret->right != null ) //

右子樹父結點設定為當前的結點

3033}34

else

3538}39

40return

ret;

41 }

3,相加成員函式**實現:

1

/*執行加法操作

*/2 sharedpointer< btree> add(const btree& btree) const39

else

1013

return

ret;

14 }

7,小結:   

1,比較操作判斷兩棵二叉樹中的資料元素是否對應相等;

2,轉殖操作將當前二叉樹在堆空間中進行複製;

3,相加操作將兩棵二叉樹中的資料元素在對應位置處相加;

4,相加操作的結果儲存在堆空間的一棵二叉樹中;

二叉樹的轉殖 比較與相加

目錄 1 二叉樹的轉殖操作 2 二叉樹比較操作的定義 3 二叉樹的相加操作 二叉樹的轉殖操作 sharedpointer btree clone const 轉殖當前樹的乙份拷貝 返回值為堆空間中的一棵新二叉樹 與當前樹相等 二叉樹的轉殖 定義功能 clone node 功能 拷貝 node 為根結...

轉殖二叉樹

題目 深度複製乙個二叉樹。給定乙個二叉樹,返回乙個他的 轉殖品 樣例給定乙個二叉樹 1 2 3 4 5返回其相同結構相同數值的轉殖二叉樹 1 2 3 4 5 思路 建立乙個新節點存放當前給出的節點的值,新建的左節點等於給出的左節點,新建的有節點等於給出的右節點,依次遞迴下去。class soluti...

轉殖二叉樹

問題描述 深度複製乙個二叉樹。給定乙個二叉樹,返回乙個他的 轉殖品 樣例 給定乙個二叉樹 1 2 3 4 5返回其相同結構相同數值的轉殖二叉樹 1 2 3 4 5 實現思路 運用遞迴演算法,採用前序遍曆法遍歷二叉樹的每乙個節點,並同時建立乙個新節點,並將值賦給這個新節點。實現 definition ...