1.经典选择题
①.某完全二叉树按层次输出(同一层从左到右)的序列为 ABCDEFGH 。该完全二叉树的前序序列为( A)
A. ABDHECFG
B. ABCDEFGH
C. HDBEAFCG
D. HDEBFGCA
分析:
②.二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历:HFIEJKG.则二叉树根结点为 (A)
A. E
B. F
C. G
D. H
分析:
③.设一课二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树前序遍历序列(D)。
A. adbce
B. decab
C. debac
D. abcde
分析:
2.经典OJ题
①二叉树的最大深度:力扣
给定一个二叉树,找出其最大深度:
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
返回它的最大深度 3
分析:
代码:
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; }
②平衡二叉树:力扣
给定一个二叉树,判断它是否是高度平衡的二叉树
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1
代码:
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 left = maxDepth(root->left); int right = maxDepth(root->right); return abs(left - right) < 2 && isBalanced(root->left) && isBalanced(root->right); }
本期二叉树也就完美落幕了。。。
请期待下篇博客排序算法,你知道哪些???