学习目标:
通过程序栈进行树的递归
学习内容:
利用程序栈的思维进行进出栈操作
参考:
https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/
学习时间:
N/A
学习产出:
func f(root *TreeNode) *TreeNode {
//临界处理,预防空指针
if root == nil {
return root
}
// 执行
tmp := root.Left
root.Left = root.Right
root.Right = tmp
// 递归左
f(root.Left)
// 递归右
f(root.Right)
return root//终止条件
}
中序遍历
func getMinimumDifference(root *TreeNode) int {
ans, pre := math.MaxInt64, -1
var dfs func(*TreeNode)
dfs = func(node *TreeNode) {
if node == nil {
return
}
dfs(node.Left)
if pre != -1 && node.Val-pre < ans {
ans = node.Val - pre
}
pre = node.Val
dfs(node.Right)
}
dfs(root)
return ans
}