[英]Printing Depth in Post Order Traversal of BST
所以现在我实现了顺序遍历,我需要打印节点所在的深度。 所以,如果我的树是这样的:
5
/ \
2 9
\ /
3 7
然后当它打印3时它应该具有2的深度。如果我递归地调用它,我将在哪里增加深度。如果我在树上,我将如何减少它?
我的代码是
void post_order(BST* root,int level)
if(root == NULL){
return;
}
post_order(root -> left,level);
post_order(root -> right, level);
//Here I would print the node info and depth
}
我要问的是,我将增加水平以显示节点的适当深度以及为什么?
无需增加/减少级别。 当你进行递归调用时,只传递一个大于当前级别的值,当堆栈展开先前级别的级别时,它仍然是递归调用之前的值。
当然,在您打印关卡的位置将决定您在遍历树时看到打印关卡的顺序。
void post_order(BST* root,int level)
if(root == NULL){
return;
}
post_order(root -> left,level + 1);
post_order(root -> right, level + 1);
//Here I would print the node info and depth
}
水平变量将帮助您跟踪深度。 如果每次进行递归调用时将当前级别+ 1值传递给子级别,则每个节点都将获得正确的深度。 根据您是希望根深度为1还是0,使用根节点进行初始调用,将第2段作为0或1。
void post_order(BST* root,int level)
if(root == NULL){
return;
}
post_order(root -> left,level+1);
post_order(root -> right, level+1);
//print node info, depth = level
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.