給出一些二叉樹的入門級(確信)
使用方法:
1//用遞迴的方式建立乙個完全二叉樹
2void bulid(intt)8
9//可以用陣列下標模擬節點編號,用多個陣列來記錄節點資訊
10struct treenode1 a[100001
];14
15//
也可以與鍊錶類似,用指標儲存二叉樹的父節點&子節點 同時要記錄根節點指標
16struct
treenode2;
20 treenode2 *root;
2122
//以下就以指標操作來簡介二叉樹的基本操作
2324
//新建節點
25struct
treenode29}
30 treenode *p = new
treenode(x);
3132
//根節點初始化
33 treenode *root;
34 root = new
treenode(v);
3536
//刪除節點(暫空)
3738
//插入子節點
39void insert(treenode *fa, treenode *p,int
flag)
45else
48 p->fa =fa;49}
5051 treenode *p = new
treenode(v);
52insert(fa,p,flag);
5354
55//
二叉樹的遍歷順序(先序遍歷、中序遍歷、後序遍歷)<-以根節點的訪問時間作為區分
5657
//先序遍歷(dlr)
58void preorder(treenode *p)
63pre order(root);
6465
//中序遍歷(ldr)
66void inorder(treenode *p)
71inorder(root);
7273
//後序遍歷(lrd)
74void postorder(treenode *p)
79postorder(root);
8081
//層級遍歷(bfs序列)(基於佇列)
82 treenode *q[n];
83void bfs(treenode *root)93}
94bfs(root);
9596
//要實現計算每個節點的深度也不難
97//
root->d = 1; 每次++時p->l/r->d=p->d+1;
兄弟二叉樹簡析
一般來說,大學開設的資料結構的課程更偏向於理論,對於具體問題的解決方法需要同學自己去練習掌握。前幾天,山東科技大學的乙個高中同學需要做設計,這個設計不是一般意義上的小專案而是乙個程式設計練習,但是需要答辯。問題還是那個很經典的問題 家譜。設計乙個家譜最核心的問題就是家譜的資料結構,毫無疑問,一定是採...
二叉樹入門
對二叉樹的儲存,即可採用順序儲存結構 陣列 也可採用鏈式儲存結構 鍊錶 在鏈式儲存結構中,每乙個節點都含有乙個資料域,兩個指標域 分別用來指向該節點的左 右子樹。利用這種節點構成的鏈式儲存結構稱為二叉鍊錶。為簡單起見,給定一資料集,以該資料集中的元素建立一完全二叉樹。這裡不考慮非完全二叉樹的情況。如...
二叉樹入門
樹是模擬實現樹幹和樹枝的一種資料結構,如同樹根一樣,樹結構都有乙個 根結點 根節點之下如同樹的樹枝一樣,可以擁有0到n個 子結點 也就是樹的 分支 如上圖。a就是這棵樹的根節點,b c就是結點a的子結點。也就是樹枝。每一根樹枝當然可以有小樹枝,也就是子節點本身可以擁有子結點。途中d和e是b的子結點。...