【发布时间】:2020-10-17 04:00:11
【问题描述】:
如果我们说,一棵深度为 2 的树:
6 <- depth = 0
/ \
/ \
4 9 <- depth = 1
/ \ \
3 5 10 <- depth = 2
我只想打印第二个级别,所以 3、5 和 10(按此顺序),我将如何执行此操作?我正在使用我为我的中序遍历编写的代码,但我被困在如何跟踪树的深度并在我处于所述深度时打印。
void printLevelNodesHelper(MovieNode * curr, int level){ //helper function
int lvl = level; //store initial value of level
if(curr != NULL){
printLevelNodesHelper(curr->left, level+1);
if(level == lvl){
cout << "Movie: " << curr->title << " " << curr->rating << endl;
}
printLevelNodesHelper(curr->right, level+1);
}
}
void MovieTree::printLevelNodes(int k){ //k is the desired level
MovieNode * curr = root;
if(root == NULL){ //if the tree is empty exit it
return;
}
else if(k == 0){ //print the root's title
cout << "Movie: " << curr->title << " " << curr->rating << endl;
}
else{
printLevelNodesHelper(curr, k);
}
}
这是我的结构和类的信息
struct MovieNode{
int ranking;
string title;
int year;
float rating;
MovieNode* left = NULL;
MovieNode* right = NULL;
};
class MovieTree{
private:
MovieNode* root;
public:
MovieTree();
~MovieTree();
void printMovieInventory();
void addMovieNode(int ranking, std::string title, int year, float rating);
void findMovie(std::string title);
void queryMovies(float rating, int year);
void averageRating();
void printLevelNodes(int k);
};
【问题讨论】:
-
提示:google“级别顺序遍历”
-
对于
printLevelNodes(),有一条注释记录了参数是什么。您能否添加类似的评论来记录printLevelNodesHelper()的参数?现在,当我查看非递归调用时,我推断出与查看递归调用时不同的目的。不知道你的目的是什么。 (两者都有用。)
标签: c++ data-structures tree binary-search-tree