发布网友 发布时间:2022-04-21 10:16
共2个回答
热心网友 时间:2023-10-18 21:04
利用递归函数,遍历二叉树节点,分别求两个子树的层次i1,i2,取大的那个层次+1即为本层的层次,依次逐层递归调用该函数,直至所有节点均求得解,最后回归根节点p,得出该节点层次。追问应该是这个节点的父母结点的层次加1吧!这个递归怎么写啊追答子树的层次+1就是本身的层次,这个没有错的。因为递归本身只能从子树开始求层次的。最末端子树的层次为1。
'假设p为根节点
sub function 层次(p) as long
'二叉树的两个子树节点p1,p2
'判断p是否为末节点(最末端节点),不是则执行下边语句,是则返回此节点层次为1
if 末节点(p) then
层次 = 1
else
a=层次(p1)
b=层次(p2)
if a >b then
层次= a
else
层次= b
end if
end if
end sub
我这里没有具体给出二叉树的数据结构和判断子树为末节点的方法,主要是因为让你可以根据自己的结构进行编码。
热心网友 时间:2023-10-18 21:05
按广度优先遍历啊,把遍历到的先放进队列,遍历一层层次+1追问用递归怎么写啊