使用該圖例:並將以先序遍歷的結果列印 原二叉樹和拷貝後的二叉樹
該圖例先序遍歷結果為: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...