前言
二叉树作为一种重要的数据结构,在算法领域有着广泛的应用,而深度优先搜索(DFS)是二叉树遍历和操作的核心算法之一。通过 DFS,可以以递归或迭代的方式深入探索树的每一个节点,并高效地解决路径查找、节点计数、最大深度等问题。本文将深入剖析二叉树的深搜算法,从基础概念到典型应用,再到代码实现,带你全面掌握这一重要的算法工具。
一、计算布尔二叉树的值
题目链接:https://leetcode.cn/problems/evaluate-boolean-binary-tree/
解法
- 相同子问题:左孩子和右孩子进行父节点对应的运算——函数头
bool evaluateTree(TreeNode* root) - 对一个子问题进行分析:
- 先特判:首先这是一个完整二叉树,如果根结点的左孩子为空,即代表右孩子也为空,则直接返回根节点对应的布尔值
- 函数体:我们现在需要的是该结点左右孩子的布尔值,则直接调用
evaluateTree(root->left)和evaluateTree(root->right),无条件相信它一定能帮我们得到左右孩子的布尔值 - 根据父节点的值判断返回表达式的类型
我们结合示例分析:

代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
bool evaluateTree(TreeNode* root) {
if (!root->left) return root->val == 0 ? false : true;
left = (root->left);
right = (root->right);
root->val == ? left | right : left & right;
}
};







