假设一棵完全二叉树的第6层有24个叶结点,则此完全二叉树最多有()个结点。
A、55
B、79
C、81
D、127
A、55
B、79
C、81
D、127
A、该树一定是一棵完全二叉树
B、树中一定没有度为1的结点
C、树中两个权值最小的结点一定是兄弟结点
D、树中任何一个非叶结点的权值一定不小于下一层任一结点的权值
面试题:二叉树的深度
题目一:输入一棵二叉权的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成的一条路径的长度为树的深度。
二叉树的结点定义如下:
struct BinaryTreeNode
{
int m_nValue ;
BinaryTreeNode* m_pLeft;
BinarvTreeNode* m_pRight ;
}
题目二:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如图6.1中的二叉树就是一棵平衡二叉树。
面试题:二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉数中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:
S truct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight ;
};
(1)沿袭5-60题使用逆转链遍历二叉树的思想。
(2)不使用tag标志,而是用内嵌的栈代替tag的作用。该内嵌的栈使用了叶结点作为栈的结构,没有另外定义栈的存储空间。
(3)利用栈解决在回溯时分辨究竟是从左子树还是右子树上升的问题,步骤是:
①当进入有非空左子树的结点的右子树时,将该结点的地址进栈。
②在回溯过程中如遇到结点的左、布子树都非空时,如果该结点就是存于栈顶的结点,则可判定当前是从该结点的右子树退回,该结点的右子女指针指向它的父结点;否则当前是从该结点的左子树退回,该结点的左子女指向它的父结点。
A、R[(i-1)/2]
B、R[i/2]
C、R[n/2-1]
D、R[n/2]