二叉树练习题

Posted 萌新的日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树练习题相关的知识,希望对你有一定的参考价值。

(文章目录)

一、104. 二叉树的最大深度

/**
 * Definition for a binary tree node.
 * struct TreeNode 
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * ;
 */


int maxDepth(struct TreeNode* root)
    if(root==NULL)
    
        return 0;
    
   int left=maxDepth(root->left);
   int right=maxDepth(root->right);
   return left>right?left+1:right+1;

递归展开图

二、110. 平衡二叉树

/**
 * Definition for a binary tree node.
 * struct TreeNode 
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * ;
 */
int maxDepth(struct TreeNode* root)
    if(root==NULL)
    
        return 0;
    
   int left=maxDepth(root->left);
   int right=maxDepth(root->right);
   return left>right?left+1:right+1;

bool isBalanced(struct TreeNode* root)
   if(root==NULL)
   
       return true;
   
   int leftdepth=maxDepth(root->left);
   int rightdepth=maxDepth(root->right);
   return abs(leftdepth-rightdepth)<2
   &&isBalanced(root->left)
   &&isBalanced(root->right);

递归展开图

三、二叉树遍历

#include<stdio.h>
#include<stdlib.h>
typedef struct treenode

    char val;
    struct treenode*left;
    struct treenode*right;
BTnode;
BTnode*tree(char *a,int*i)//创建二叉树

    if(a[*i]==#)
    
        (*i)++;//为#看作一个空格 ,跳过
        return NULL;
    
    BTnode*root=(BTnode*)malloc(sizeof(BTnode));//在函数内创建二叉树结构体类型,最大程度上知道了二叉树的节点个数
        root->val=a[*i];
        (*i)++;//这里不要忘记将i+1 ,将a的值指向下一个
        root->left=tree(a,i);//两次循环调用
        root->right=tree(a,i);
    return root;//返回结构体指针,可以找到二叉树

void inorder(BTnode*root)//二叉树的中序遍历 递归

    if(root==NULL)
    
        return ;
    
    inorder(root->left);//左子树
    printf("%c ",root->val);//根
    inorder(root->right);//右子树

int main()

    char arr[40]=0;
    scanf("%s",arr);
    int i=0;//这里我们想要通过函数得到i的值 ,需要传址调用
    BTnode*root=tree(arr,&i);
    inorder(root);
    return 0;

递归展开图

以上是关于二叉树练习题的主要内容,如果未能解决你的问题,请参考以下文章

数据结构——二叉树的基础练习题(单值二叉树,翻转二叉树,相同的树,对称二叉树,另一颗子树,二叉树的前序遍历)

二叉树基础练习

平衡二叉树

数据结构之二叉树基础OJ练习另一颗树的子树

练习题proj1 判断二叉树子树和是否为指定的值

二叉树有关习题整理145二叉树的后序遍历 94二叉树的中序遍历 572另一棵树的子树 236二叉树的最近公共祖先 JZ36二叉搜索树与双向链表 - 牛客