C 二叉樹的基本操作

2021-05-24 23:01:51 字數 3037 閱讀 6941

c++實現二叉樹的基本操作

包括 新增節點、刪除節點、前序遍歷、中序遍歷、後續遍歷、層序遍歷、最大值、最小值、二叉樹的高度

標頭檔案

#include

class tree

};linknode *head;//表頭節點

//新增節點

void addtreenode(linknode *node,linknode *newnode);

//顯示中序排列

void showclr(linknode *root);

//顯示前序排列

void showlcr(linknode *root);

//顯示右序排列

void showlrc(linknode *root);

//高度

int  height(linknode *root);

public :

//新增節點

bool addtreenode(int  data);

//顯示中序排列

bool showclr();

//顯示前序排列

bool showlcr();

//顯示右序排列

bool showlrc();

//前序排列

bool floor();

//最小值

bool min(int** minvalue);

//最大值

bool max(int** maxvalue);

//是否是空樹

bool empty();

//高度

void height(int** height);

~tree()

tree()};

//實現檔案tree.cpp

#include "stdafx.h"

#include

#include

using namespace std ;

#include "tree.h";

#include

//新增節點

void tree::addtreenode(linknode *node,linknode *newnode)

else

}else if(node->datadata)

else

} //新增節點

bool tree::addtreenode(int data)

addtreenode(head->left,node);

return true;

}//中序遍歷

void tree::showclr(linknode *root)

if(root->left!=null)

if(root->right!=null)

}//中序遍歷

bool tree::showclr()

showclr(head->left);

return true;

}//前序遍歷

void tree::showlcr(linknode *root)

if(root!=null)

if(root->right!=null)

}//前序遍歷

bool tree::showlcr()

showlcr(head->left);

return true;

}//後序遍歷

void tree::showlrc(linknode *root)

if(root->right!=null)

if(root!=null)

}//後序遍歷

bool tree::showlrc()

showlrc(head->left);

return true;

}//最小值

bool tree::min(int** minvalue)

linknode *tmp=head->left;

while(tmp!=null && tmp->left!=null)

**minvalue= tmp->data;

return true;

}//最大值

bool tree::max(int** maxvalue)

linknode *tmp=head->left;

while(tmp!=null && tmp->right!=null)

**maxvalue= tmp->data;

return true;

}//判斷樹是否為空

bool tree::empty()

//用佇列實現二叉樹層序遍歷

//1:新增根節點

//2:列印根節點的資料,新增根節點的子節點,彈出根節點

//3:迴圈第二步

bool tree::floor()

if(cur->right!=null)

q.pop();

}return true;

//求兩個數中較大的乙個

int max(int a,int b)

else

}//遞迴求二叉樹的高度

//二叉樹的高度就是左子樹和右子樹中較大一顆二叉樹的高度

int tree::height(linknode *root)

return 1+max(height(root->left),height(root->right));

}//用指向指標的指標接受二叉樹的高度

void tree::height(int** height)

#include "stdafx.h"

#include

#include

using namespace std;

#include "tree.h"

void treetest() ;

int main()

//指標型別呼叫屬性和方法用「->」 物件型別用「.」

//變數在不需要使用的時候就要釋放掉它的記憶體

void treetest()                  

;for(int i=0;i<10;i++)

cout<

二叉樹的基本操作(C )

include include include using namespace std typedef char t 為本程式定義所使用的具體資料型別 struct btreenode btreenode class btree btree 建立二叉樹函式 函式功能 建立一棵二叉鏈式結構 函式引數 ...

C 二叉樹的基本操作

對於一棵二叉樹,有三種基本遍歷方式 1 前序遍歷 dlr 先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。歸結為 從根結點一直從左子樹向下直到葉結點,然後返回到葉結點的父親,再從其父結點的右子樹向下。2 中序遍歷 ldr 先中序遍歷左子樹,然後訪問根結點,最後遍歷右子樹。3 後序遍歷 lrd 先後序遍...

二叉樹基本操作

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