JZ18 二叉树的镜像
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入
{5,3,7,2,4,6,8},3
返回值
{8,10,6,11,9,7,5}
TreeNode* Mirror(TreeNode* pRoot)
{
TreeNode* temp;
if (pRoot == NULL)
return NULL;
else
{
temp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
return pRoot;
}
JZ38 二叉树的深度
题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
输入
{1,2,3,4,5,#,6,#,#,7}
返回值
4
int TreeDepth(TreeNode* pRoot)
{
int depth = 0;
if (pRoot == NULL)
return 0;
else
{
if (TreeDepth(pRoot->left) > TreeDepth(pRoot->right))
return TreeDepth(pRoot->left) + 1;
else
return TreeDepth(pRoot->right) + 1;
}
return depth;
}
JZ62 二叉搜索树的第k个结点
题目描述
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。
输入
{5,3,7,2,4,6,8},3
返回值
{4}
int index = 0;
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if (pRoot != NULL)
{
TreeNode* node = KthNode(pRoot->left, k);
if (node != NULL)
return node;
index++;
if (index == k)
return pRoot;
node = KthNode(pRoot->right, k);
if (node != NULL)
return node;
}
return NULL;
}