/*2023年8月19日 16:55:56*/
/*構建乙個二叉樹函式*/
#include #include #include typedef char datatype;
typedef struct treetreenode;
/*二叉樹初始化函式*/
void treeinit(treenode **root)
(*root)->left = null;
(*root)->right = null;
}/*二叉樹左子節點插入*/
int *treeleftnode(treenode *pleft, datatype x)
temp = pleft->left; //儲存原節點的左子樹指標
pre = (treenode*)malloc(sizeof(treenode));//開闢pre的記憶體空間
pre->data = x; //將數字插入節點資料儲存中
pre->left = temp;//將原樹的左子樹指標賦值給新節點的左子樹指標
pre->right = null; //將新節點右子樹設為空;
pleft->left = pre; //新節點成為左子樹;
return pleft->left; //2023年8月19日 21:03:12 返回左子樹指標
}/*二叉樹右子節點插入*/
int *treerightnode(treenode *pright, datatype x)
temp = pright->right;
pre = (treenode*)malloc(sizeof(treenode));//開闢pre的記憶體空間
pre->data = x;
pre->right = temp;
pre->left = null;
pright->right = pre;
return pright->right; //2023年8月19日 21:02:49 返回右子樹指標
}/*二叉樹左子節點刪除*/
int *treeleftdel(treenode *dleft)
free(dleft->left);
dleft->left = null;
return dleft;
}/*二叉樹右子節點刪除*/
int *treerightdel(treenode *dright)
free(dright->right);
dright->right = null;
return dright;
}/*遞迴撤銷鍊錶的函式*/
void destroy(treenode **tree)
if ((*tree) != null && (*tree)->right != null)
free(*tree);
}/*通過遞迴實現遍歷*/
void visit(datatype item)
/*前序遍歷*/
void frontorder(treenode *tree, void visit(datatype item))
}/*中序遍歷*/
void betweenorder(treenode *tree, void visit(datatype item))
}/*後續遍歷*/
void lastorder(treenode *tree, void visit(datatype item))
}/*列印函式*/
void printbitree(treenode *tree, int num) //其中num是層數
printbitree(tree->right, num + 1);
/*訪問根節點*/
for ( i = 0; i < num-1; i++)
if (num>0)
printbitree(tree->left, num + 1);
}/*二叉樹查詢函式*/
treenode *serach(treenode *tree, datatype x)
if (tree->data==x)
if (tree->left!=null) }
if (tree->right != null) }
return null;
}/*主函式*/
int main()
二叉樹的建立和三種遍歷
二叉樹的三種遍歷是以根的遍歷順序來講的 先序遍歷 根左右 中序遍歷 左根右 後序遍歷 左右根 二叉樹是從根節點的那一層開始,從左至右讀每一層的結點讀入的。表示空結點,表示輸入結束 include include include include include include include incl...
三種二叉樹遍歷的演算法(python實現)
前序遍歷 根節點 左孩子,右孩子 前序遍歷 class treenode def init self,x self.val x self.left none self.right none class solution def init self self.x 按順序儲存節點的列表 def qian...
二叉樹的三種遍歷
重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...