如何检查Java中的二叉树是否完整

| 我在执行此任务时遇到很多麻烦。将Wikipedia定义用于完整的二叉树:   完整的二叉树是一个二叉树,其中除最后一个级别外,每个级别都被完全填充,并且所有节点都尽可能地靠左 我需要一种检查这些条件的方法,但是无论我尝试多少,我似乎都无法解决任何问题。如果我要将ѭ0的输入传递给ѭ1的方法,我该如何遍历二叉树并检查其是否完整?谁能提供有关伪代码的帮助或对此的解释?这里还有另一个问题:如何确定二叉树是否完整? 这个问题的答案是伪代码,但是我不明白所有随机变量来自何处,或者它们代表什么意思,或者为什么最后三行的括号中有两个值。如果有人可以帮助其他代表,我将非常感激。 谢谢。     
已邀请:
从左到右遍历树。您需要在几个关键点上存储或比较信息: 当您点击第一个叶子节点时。 当您命中后续的叶子节点时。 当您击中与根不同距离的第一个叶子节点时。 由于这是家庭作业,因此您可能应该从该提示中继续学习。     
int CT()
{
  int lh=0, rh=0, sign=1;
  if (!root->left && !root->right) 
    return 1;
  if (!root->left && root->right) 
    return 0;

  lh = CT(root->left);
  rh = CT(root->right);

  if (lh == 0 || rh == 0) 
    return 0;
  if (lh < 0 && rh < 0) 
    return 0;
  if (lh < 0 || rh < 0) 
    sign = -1;
  if (|lh| == |rh| ) 
    return (|lh|+1)*sign;
  elseif (rh == lh-1) 
    return -(|lh|+1);
  else return 0;
}

if CT returns \'0\' - its not a complete tree.
\'-\' is used to check mismatch in height is encountered on one subtree only.
    

要回复问题请先登录注册