二叉樹基本操作(上)

2021-08-14 20:47:36 字數 2730 閱讀 1232

一、二叉樹簡單操作

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

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

2、二叉樹的遍歷

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

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

(3)層序遍歷。

二、完整**

1、binarytree.h

#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__

2、binarytree.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)

}}

3、test.c

#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個節點...