一、二叉樹簡單操作
1、二叉樹的建立(二叉鏈)
a = ;(『#』代表null)。
2、二叉樹的遍歷
(1)迭代法遍歷(①前序遍歷②中序遍歷③後序遍歷)
(2)遞迴法遍歷(①前序遍歷②中序遍歷③後序遍歷)
(3)層序遍歷。
二、完整**
1、binarytree.h
2、binarytree.c#ifndef __tree_h__
#define __tree_h__
#include
#include
#include
#include
typedef int datatype;
typedef struct btreenode //樹結構
btnode;
btnode* createbtree(datatype *a,size_t *index,datatype invalid); //建立一棵二叉樹
void btreeprevorderr(btnode *root); //前序遍歷
void btreeinorderr(btnode *root); //中序遍歷
void btreebackorderr(btnode *root); //後序遍歷
void btreeprevorder(btnode *root); //前序遍歷
void btreeinorder(btnode *root); //中序遍歷
void btreebackorder(btnode *root); //後序遍歷
void btreefloororder(btnode *root); //層序遍歷
#endif //__tree_h__
3、test.c#include "tree.h"
btnode* buytreenode(datatype x) //建立樹節點
btnode* createbtree(datatype *a,size_t *index,datatype invalid) //建立一棵二叉樹
return root;
}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); //根
}#include "stack.h"
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; //訪問右子樹
}}void btreefloororder(btnode *root) //層序遍歷
if (front->right)
}}
#include "tree.h"
void test1()
; datatype index = 0;
btnode *tree = createbtree(a,&index,'#');
btreeprevorderr(tree); //前序遍歷
btreeinorderr(tree); //中序遍歷
btreebackorderr(tree); //後序遍歷
btreeprevorder(tree); //非遞迴前序遍歷
btreeinorder(tree); //非遞迴中序遍歷
btreebackorder(tree); //非遞迴後序遍歷
btreefloororder(tree);//層序遍歷
printf("\n");
}int main()
二叉樹基本操作(上)
一 二叉樹基本操作 1 二叉樹的建立 二叉鏈 a 代表null 2 二叉樹的遍歷 1 迭代法遍歷 前序遍歷 中序遍歷 後序遍歷 2 遞迴法遍歷 前序遍歷 中序遍歷 後序遍歷 3 層序遍歷。前序遍歷也叫先根遍歷 訪問順序 根 左子樹 右子樹。中序遍歷也叫中根遍歷 訪問順序 左子樹 根 右子樹。後續遍歷...
二叉樹基本操作
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個節點...