c 實現二叉樹的拷貝

2022-08-17 07:15:16 字數 1491 閱讀 8716

使用該圖例:並將以先序遍歷的結果列印 原二叉樹和拷貝後的二叉樹

該圖例先序遍歷結果為:a b c d e f g h

直接上**:

1 #include2

using

namespace

std;34

//二叉樹節點

5struct

binarynode6;

11 binarynode* copytree(binarynode*root);

12void treefree(binarynode*root);

13void recursion(binarynode*root)

1920

//初始化二叉樹

21void

createbinarytree() ;

23 binarynode node2 = ;

24 binarynode node3 = ;

25 binarynode node4 = ;

26 binarynode node5 = ;

27 binarynode node6 = ;

28 binarynode node7 = ;

29 binarynode node8 = ;

30//

建立節點關係

31 node1.lchild = &node2;

32 node1.rchild = &node6;

33 node2.rchild = &node3;

34 node3.lchild = &node4;

35 node3.rchild = &node5;

36 node6.rchild = &node7;

37 node7.lchild = &node8;

38 cout << "

原二叉樹:\n";

39 recursion(&node1);

40 binarynode* p = copytree(&node1);

41 cout << "

\n拷貝後二叉樹:\n";

42recursion(p);

43//

釋放拷貝二叉樹的記憶體

44treefree(p);

4546}47

//二叉樹拷貝

48 binarynode* copytree(binarynode*root)

59void treefree(binarynode*root)

6566

67int

main()

結果:

拷貝二叉樹

拷貝二叉樹,就是要拷貝根節點,葉子節點,第一步得先分配乙個空間給根節點,bitnode newnode bitnode malloc sizeof bitnode 將其葉子節點指向null,在判斷原樹的根節點的左節點和右節點是否為空,不為空就得複製過去,利用迭代就很容易做到。最後將新的子節點和根節點...

C 實現二叉樹

其中的 linkstack.h 和 linkqueue 分別在 以下兩篇博文裡 linkstack linkqueue include include linkstack.h include linkqueue.h using namespace std 定義節點 templatestruct no...

二叉樹C 實現

最近整理原來的一些 腦子有點不好使,還是記下來吧。binary tree.h,遍歷包含了遞迴和非遞迴兩種,層次遍歷 ifndef binary tree h define binary tree h templatestruct binode templateclass bitree endif b...