面试题:二叉树中和为某一值的路径题目:输入一棵二叉树和一个整数,打印出二叉数中结点值的和为输
面试题:二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉数中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:
S truct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight ;
};
面试题:二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉数中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:
S truct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight ;
};
面试题:二叉树的深度
题目一:输入一棵二叉权的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成的一条路径的长度为树的深度。
二叉树的结点定义如下:
struct BinaryTreeNode
{
int m_nValue ;
BinaryTreeNode* m_pLeft;
BinarvTreeNode* m_pRight ;
}
题目二:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如图6.1中的二叉树就是一棵平衡二叉树。
面试题:树的子结构
题目:输入两棵二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下:
StructBinaryTreeNode
{
int m nValue;
BinaryTreeNode* m_pLeft;
BinaryT reeNode* m_pRight ;
};
面试题:二叉树的镜像
题目:请完成一个函数,输入一个二叉数,该函数输出它的镜像。
二叉树结点的定义如下:
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_ pleft;
BinaryTreeNode* m_pRight ;
};
面试题:从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树,则依次打印出8、6、10、5、7、9、11。
二叉树结点的定义如下:
struct BinaryTreeNode
{
int m_nValue;
BinarvTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
面试题:重建二叉树
题目:输入某二叉树的序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出图2.6所示的二叉树并输出它的头结点。二叉树结点的定义如下:
struct Binary Tree Node
{
int m_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight;
};
面试题:n个骰子的点数
题目:把n骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。
面试题:链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。
链表结点定义如下:
struct List Node
{
int m n Value;
ListNode* m_p Next;
};
面试题:从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。
链表结点定义如下:
struct List Node
{
int m_n Key;
ListNode* m_pNext;
};
面试题:赋值运算符函数
题目:如下为类型CMyString 的声明,请为类型添加赋值运算符函数。
classCMyString
{
public :
CMyString (char* pData=NULL);
CMyString (const CMyString& str);
~CMyString (void);
private:
char* m_pData;
};
面试题:连续子数组的最大和
题目:输入一个整数型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个数组。求所有子数组的最大值。要求时间复杂度为O(n)。