博客
关于我
二叉树的创建遍历应用删除
阅读量:379 次
发布时间:2019-03-04

本文共 3768 字,大约阅读时间需要 12 分钟。

???????????????????????????????????????????????????????????????

??????

?????

?????????????????????????????????????????????????

typedef struct BiNode {
char data;
struct BiNode* lchild;
struct BiNode* rchild;
} BiNode;
BiTree* createBiTree(BiNode* bt) {
char c;
cin >> c;
if (c == '#') {
bt = NULL;
} else {
bt = new BiNode;
bt->data = c;
bt->lchild = createBiTree(bt->lchild);
bt->rchild = createBiTree(bt->rchild);
}
return bt;
}

?????

????????????????????C++?????????????????????

class BiTree {
private:
struct Node {
char data;
Node* left;
Node* right;
};
Node* root;
public:
BiTree() {
root = create(root);
}
void create(Node*& node) {
char c;
cin >> c;
if (c == '#') {
node = NULL;
} else {
node = new Node;
node->data = c;
create(node->left);
create(node->right);
}
}
};

??????

????

???????????????????????????????????

void preOrder(BiTree* bt) {
if (bt == NULL) {
return;
} else {
cout << bt->root->data << " ";
preOrder(bt->root->left);
preOrder(bt->root->right);
}
}

????

????????????????

void levelOrder(BiTree* root) {
if (root == NULL) {
return;
}
queue
q;
q.enqueue(root->root);
while (!q.empty()) {
Node* current = q.front();
q.pop();
cout << current->data << " ";
if (current->left != NULL) {
q.enqueue(current->left);
}
if (current->right != NULL) {
q.enqueue(current->right);
}
}
}

??

????????

????????????????????

int getTreeDepth(BiTree* T) {
if (T == NULL) {
return 0;
} else {
int leftDepth = getTreeDepth(T->root->left);
int rightDepth = getTreeDepth(T->root->right);
return (leftDepth > rightDepth) ? (leftDepth + 1) : (rightDepth + 1);
}
}

?????

??????????????

void copyTree(BiTree* T, BiTree*& NewT) {
if (T == NULL) {
NewT = NULL;
return;
} else {
NewT = new BiTree;
NewT->root->data = T->root->data;
copyTree(T->root->left, NewT->root->left);
copyTree(T->root->right, NewT->root->right);
}
}

?????

?????????????

int nodeCount(BiTree* T) {
if (T == NULL) {
return 0;
} else {
return nodeCount(T->root->left) + nodeCount(T->root->right) + 1;
}
}

???????

??????????????????

int getLeafNumber(BiTree* root) {
if (root == NULL) {
return 0;
} else if (root->root->left == NULL && root->root->right == NULL) {
return 1;
} else {
return getLeafNumber(root->root->left) + getLeafNumber(root->root->right);
}
}

???1????

?????????????

int getDegreeOneNode(BiTree* T) {
if (T == NULL) {
return 0;
}
if ((T->root->left == NULL && T->root->right != NULL) ||
(T->root->left != NULL && T->root->right == NULL)) {
return 1 + getDegreeOneNode(T->root->left) + getDegreeOneNode(T->root->right);
} else {
return getDegreeOneNode(T->root->left) + getDegreeOneNode(T->root->right);
}
}

???2????

??????????

int getDegreeTwoNode(BiTree* T) {
if (T == NULL) {
return 0;
}
if (T->root->left != NULL && T->root->right != NULL) {
return 1 + getDegreeTwoNode(T->root->left) + getDegreeTwoNode(T->root->right);
} else {
return getDegreeTwoNode(T->root->left) + getDegreeTwoNode(T->root->right);
}
}

?????

?????????

void releaseTree(BiTree* T) {
if (T != NULL) {
releaseTree(T->root->left);
releaseTree(T->root->right);
delete T;
}
}

???????????????????????????????????

转载地址:http://ttyg.baihongyu.com/

你可能感兴趣的文章
Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
查看>>
Objective-C实现calloc函数功能(附完整源码)
查看>>
Objective-C实现canny边缘检测算法(附完整源码)
查看>>
Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
查看>>
Objective-C实现check strong password检查密码强度算法(附完整源码)
查看>>
Objective-C实现chudnovsky algorithm楚德诺夫斯基算法(附完整源码)
查看>>
Objective-C实现CIC滤波器(附完整源码)
查看>>
Objective-C实现circle sort圆形排序算法(附完整源码)
查看>>
Objective-C实现CircularQueue循环队列算法(附完整源码)
查看>>
Objective-C实现clearBit清除位算法(附完整源码)
查看>>
Objective-C实现climbStairs爬楼梯问题算法(附完整源码)
查看>>
Objective-C实现cocktail shaker sort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现cocktailShakerSort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现CoinChange硬币兑换问题算法(附完整源码)
查看>>
Objective-C实现collatz sequence考拉兹序列算法(附完整源码)
查看>>
Objective-C实现Collatz 序列算法(附完整源码)
查看>>
Objective-C实现comb sort梳状排序算法(附完整源码)
查看>>
Objective-C实现combinationSum组合和算法(附完整源码)
查看>>
Objective-C实现combinations排列组合算法(附完整源码)
查看>>
Objective-C实现combine With Repetitions结合重复算法(附完整源码)
查看>>