我们获得了一项任务,帮助我们准备构建AVL树。该任务涉及“功能签名”。经过一些谷歌搜索,我仍然不清楚我将签名转换为实际实现的能力。
分配:
1。编写一个递归例程来计算树的高度。这是我写的例程的函数签名。
int AVL<Item_Type>::get_height(AVLNode<Item_Type>*& local_root)
假设调用者按如下方式调用此例程:
get_height(root);
2. 编写递归例程以删除树中的节点。使用此功能签名。
void delete_tree (AVLNode<Item_Type>*& local_root);
考虑我们谈到的三种树遍历(预订,有序,后期订购)。考虑哪一个最适合这个问题。
假设调用者按如下方式调用此例程:
delete_tree(root);
我的实施:
1
int AVL<Item_Type>::get_height(AVLNode<Item_Type>* &local_root){
int height = 0;
if (local_root == NULL)
{
return -1;
}
int leftHeight = get_height(local_root->left);
int rightHeight = get_height(local_root->right);
int maxHeight = max(leftHight, rightHeight) + 1;
return maxHeight;
}
2
void AVL<Item_Type>::delete_tree(AVLNode<Item_Type>* &local_root){
if (local_root != NULL){
delete_tree(local_root->left);
delete_tree(local_root->right);
delete local_root;
}
local_root = NULL;
}
// This is post-order tree traversal (<-?)
我的功能应该如何?我是否正确实施了它们?指出你看到的任何其他错误