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...