死磕二叉树
✏️ 1、DFS深度遍历 & 递归
DFS深度遍历 & 递归int helper(TreeNode *node, int &sum){
if(!node){
sum = max(sum, 0);
return 0;
}
int lsum = 0, rsum = 0;
if(node->left){
lsum = max(0, helper(node->left, sum)); // 左子树的贡献
}
if(node->right){
rsum = max(0, helper(node->right, sum)); // 右子树的贡献
}
sum = max(sum, node->val + lsum + rsum); // 当前子树的 maxSum 挑战最大值
return node->val + max(lsum, rsum); // 向父节点提供的最大和,要包括自己
}
int maxPathSum(TreeNode* root){
int maxSum = INT_MIN;
helper(root, maxSum);
return maxSum;
}✏️ 2、LCA问题
LCA问题✏️ 3、序列化和反序列化
✏️ 4、二叉树遍历之Morris算法
✏️ 5、镜像问题
5.1、二叉树的镜像
5.2、判断二叉树是不是对称二叉树
5.3、求X节点的个数(阿里面试题)
5.4、判断两棵二叉树是否同构

✏️ 6、其他
6.1、逆时针打印完全二叉树的边界节点
最后更新于