二叉树简答题,二叉树题型
Yyds干货库存
@TOC
一. 104二叉树的最大深度
给定一棵二叉树,求其最大深度。
二叉树的深度是从根节点到最远的叶节点的最长路径上的节点数。
注意:叶节点是指没有子节点的节点。
示例:
给定二叉树[3,9,20,null,null,15,7],
返回其最大深度3。
/**
*二叉树节点的定义。
*结构树节点{
* int val
* struct TreeNode * left
* struct TreeNode * right
* };
int max depth(struct TreeNode * root){
if(root==NULL)
返回0;
int left=maxDepth(根左);
int right=max depth(root-right);
向左向右返回?左1:右1;
}
主要思路是分而治之,大事化小,把它变成一个有根节点的。
A的左子树和A的右子树,然后分别判断左子树和右子树的最大深度,
最大值1是二叉树的最大深度。
递归展开图
二。110.平衡二叉树
给定一棵二叉树,判断它是否是一棵高度平衡的二叉树。
在这个问题中,高度平衡的二叉树被定义为:
二叉树的每个节点的左右子树的高度差的绝对值不超过1。
/**
*二叉树节点的定义。
*结构树节点{
* int val
* struct TreeNode * left
* struct TreeNode * right
* };
int max depth(struct TreeNode * root){
if(root==NULL)
返回0;
int left=maxDepth(根左);
int right=max depth(root-right);
向左向右返回?左1:右1;
bool is balanced(struct TreeNode * root){
if(root==NULL)
返回true
int left depth=max depth(root-left);
int right depth=max depth(root-right);
返回abs(leftdepth-rightdepth) 2
isBalanced(根左)
isBalanced(根右);
}
本主题也使用二叉树的最大深度。我最初的想法是紧跟话题。
找到根节点的左子树和根节点的右子树,但是后来我发现我忽略了一个条件,那就是每个节点必须是一个差异。
这个问题还用到了C语言中使用的abs来求绝对值。
只有满足这一点的左子树和左子树的差小于2,左子树和右子树本身的递归差小于2。
递归展开图
第三,二叉树遍历
写一个程序,读入用户输入的一串优先遍历字符串,根据这个字符串建立一个二叉树(存储为指针)。比如下面的序列遍历字符串:ABC##DE#G##F###其中“#”代表一个空格,空格字符代表一棵空树。建立这个二叉树后,按中间顺序遍历二叉树,输出遍历结果。
输入描述:
输入1行的字符串,长度不超过100。
输出描述:
可能有多组测试数据,并且对于每组数据,
将输入字符串构建到二叉树中后,按中间顺序遍历序列,每个字符后面跟一个空格。
每个输出结果占据一行。
示例1
投入
abc##de#g##f###
输出
中国工商银行
#包含stdio.h
#包含stdlib.h
typedef结构treenode
char val
struct treenode * left
struct treenode * right
} BTnode
BTnode*tree(char *a,int*i)//创建一个二叉树
if(a[*i]==# )
(* I);//将#视为空格,跳过
返回NULL
Bt node * root=(Bt node *)malloc(sizeof(Bt node));//在函数中创建一个二叉树结构类型,最大程度的知道二叉树的节点数。
root-val=a[* I];
(* I);//不要忘记将i 1和A的值指向这里的下一个
root- left=tree(a,I);//两次循环调用
root- right=tree(a,I);
返回根目录;//返回结构指针,可以找到二叉树
Void inorder(BTnode*root)//二叉树的中序遍历递归
if(root==NULL)
返回;
inorder(根左);//左侧树
printf(%c ,root-val);//根
inorder(根右);//右侧子树
int main()
char arr[40]={ 0 };
scanf(%s ,arr);
int I=0;//这里我们想通过函数得到I的值,需要通过引用调用。
BTnode*root=tree(arr,
inorder(根);
返回0;
}
首先以这个题目的例子为例。# 代表空间。
abc##de#g##f###
递归展开图
。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。