leetcode_530_二叉搜尋樹的最小絕對差&&783. 二叉搜尋樹結點最小距離
阿新 • • 發佈:2018-12-24
給定一個所有節點為非負值的二叉搜尋樹,求樹中任意兩節點的差的絕對值的最小值。
示例 :
輸入: 1 \ 3 / 2 輸出: 1 解釋: 最小絕對差為1,其中 2 和 1 的差的絕對值為 1(或者 2 和 3)。
注意: 樹中至少有2個節點。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int getMinimumDifference(TreeNode* root) } };
中序遞迴呼叫二叉樹
非遞迴的方法需要藉助棧來記錄遍歷路徑上的節點,class Solution { public: int getMinimumDifference(TreeNode* root) { int minDiff = INT_MAX, pre = -1; stack<TreeNode*> stk; TreeNode* p = root; while(p || !stk.empty()) { while(p) { stk.push(p); p = p->left; } p = stk.top(); stk.pop(); if(pre != -1) minDiff = min(minDiff, p->val - pre); pre = p->val; p = p->right; } return minDiff; } };