二叉樹基本操作(上)

2021-08-14 20:47:36 字數 2533 閱讀 6220

一、二叉樹基本操作

1、二叉樹的建立(二叉鏈)

a = ;(『#』代表null)。

2、二叉樹的遍歷

(1)迭代法遍歷(①前序遍歷②中序遍歷③後序遍歷)

(2)遞迴法遍歷(①前序遍歷②中序遍歷③後序遍歷)

(3)層序遍歷。

前序遍歷也叫先根遍歷:訪問順序:根–>左子樹–>右子樹。

中序遍歷也叫中根遍歷:訪問順序:左子樹–>根–>右子樹。

後續遍歷也叫後根遍歷: 訪問順序:左子樹–>右子樹–>根。

層序遍歷:訪問順序:從根節點到葉子節點(同一層中先左子樹再右子樹)。

二、函式**及測試結果

1、二叉樹的建立

btnode* buytreenode(datatype x) //建立樹的節點

btnode* createbtree(datatype *a,size_t *index,datatype invalid) //建立一棵二叉樹

return root; //返回根節點位址

}

2、二叉樹的遍歷

(1)迭代法(棧和佇列相關知識棧和佇列基本知識)

①前序遍歷

void btreeprevorder(btnode *root) //迭代法前序遍歷

}top = stacktop(&s); //左子樹為空,取棧頂

stackpop(&s);

tmp = top->right; //訪問右子樹}}

②中序遍歷

void btreeinorder(btnode *root)  //中序遍歷

}top = stacktop(&s); //左子樹為空,取棧頂

printf("%d ",top->

data);

stackpop(&s);

tmp = top->right; //訪問右子樹}}

③後序遍歷

void btreebackorder(btnode *root)  //後序遍歷

}top = stacktop(&s); //左子樹為空,取棧頂

if (null

== top->right || top->right == prev)

else

tmp = top->right; //訪問右子樹}}

(2)遞迴法

①前序遍歷

void btreeprevorderr(btnode *root)  //前序遍歷

printf("%d ",root->

data); //根

btreeprevorderr(root->left); //左

btreeprevorderr(root->right); //右

}

②中序遍歷

void btreeinorderr(btnode *root)  //中序遍歷

btreeinorderr(root->left); //左

printf("%d ",root->

data); //根

btreeinorderr(root->right); //右

}

③後續遍歷

void btreebackorderr(btnode *root)  //後序遍歷

btreebackorderr(root->left); //左

btreebackorderr(root->right); //右

printf("%d ",root->

data); //根

}

(3)層序遍歷。(棧和佇列相關知識棧和佇列基本知識)

void btreefloororder(btnode *root)  //層序遍歷

if (front->right)}}

運算結果:

1,前序遍歷

2、中序遍歷

3、後序遍歷

4、層序遍歷

完整源**請戳二叉樹簡單操作完整**

二叉樹基本操作(上)

一 二叉樹簡單操作 1 二叉樹的建立 二叉鏈 a 代表null 2 二叉樹的遍歷 1 迭代法遍歷 前序遍歷 中序遍歷 後序遍歷 2 遞迴法遍歷 前序遍歷 中序遍歷 後序遍歷 3 層序遍歷。二 完整 1 binarytree.h ifndef tree h define tree h include ...

二叉樹基本操作

tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...

二叉樹基本操作

一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...