平衡二叉树的高度的计算
#include<iostream>
using namespace std;
typedef struct TreeNode {
int data;
TreeNode* left;
TreeNode* right;
TreeNode(){}
TreeNode(int x):data(x),left(nullptr),right(nullptr){}
}TreeNode,*BiTree;
BiTree PreInsert() {
TreeNode* root = nullptr;
char x;
cin >> x;
if (x == '#') return nullptr;
root = new TreeNode(x);
root->left = PreInsert();
root->right = PreInsert();
return root;
}
int Order(BiTree T) {
if (T == nullptr) return 0;
if (T->data == 1) {
return Order(T->left) + 1;
}
else if (T->data == -1) {
return Order(T->right) + 1;
}
else {//0
return Order(T->left) + 1;
}
}
int main() {
BiTree T = nullptr;
while (1) {
T = PreInsert();
if (T == nullptr) break;
cout << Order(T) << endl;
}
return 0;
}