第六章 二叉树part06
第六章 二叉树part06
530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先
530.二叉搜索树的最小绝对差
题目链接 :
Code : ( Basic 解 )
/**
* 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:
int getMinimumDifference(TreeNode* root) {
// 指针 的 分配
// 多指针 的 使用
// previous pointer 的 暂存
// 支持 结点 的 预处理
// 左 移 更新 左 relaive edge 值
// 由 子 结点 驱动 计算
// 历史 指针 的 使用
// TreeNode* node_LeftEdge ;
// TreeNode* node_RightEdge ;
// TreeNode* node_Work ;
// node_LeftEdge = root ;
// node_RightEdge = root ;
// node_Work = root ;
// 注意 递归 程序 的 规律
// 新 建 递归 程序 / 函数 , 再调用
int valueInt_MinDiff_For_Return ;
valueInt_MinDiff_For_Return = fuction_Recursion_Work(root , nullptr , nullptr) ;
return valueInt_MinDiff_For_Return ;
}
int fuction_Recursion_Work(TreeNode* node_In , TreeNode* node_LeftLongEdge_In ,TreeNode* node_RightLongEdge_In )
{
TreeNode* node_LeftLongEdge ;
TreeNode* node_RightLongEdge ;
TreeNode* node_Work ;
node_LeftLongEdge = node_LeftLongEdge_In ;
node_RightLongEdge = node_RightLongEdge_In ;
node_Work = node_In ;
// int diff_NodeThis_With_Left ;
// int diff_NodeThis_With_Right ;
// basic + 优化
// if(node_Work->left == nullptr)
// {
// diff_NodeThis_With_Left = -1 ;
// }
// if(node_Work->right == nullptr)
// {
// diff_NodeThis_With_Right = -1 ;
// }
// 状态 信息 与 值
// Conbination 的 情况
int diff_LeftChild = -1 ;
int diff_RightChild = -1 ;
// 左 子 结点 的 diff 的 更新
if(node_Work
