bfsclass Solution {public: int countNodes(TreeNode* root) { int num=0; if(root==nullptr)return num; queue<TreeNode*>q;
分析如果目标节点大于当前节点值,则去右子树中删除;如果目标节点小于当前节点值,则去左子树中删除;如果目标节点就是当前节点,分为以下三种情况:其无左子:其右子顶替其位置,删除了该节点;其无右子:其左子顶替其位置,删除了该节点;其左右子节点都有:其左子树转移到其右子树的最左节点的左子树上,然后右子树顶替
分析二叉搜索树的先序遍历就是从小到大排列,那么反过来逆先序遍历就是从大到小,此时将sum赋给根节点即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;
分析前序遍历中可以找出中序遍历的根节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tre