Recursion
- selfcontained recursion
- global variables outside of recursion
Recursion Design
- Whenever reach to a qualified node, record the node reference and level for that node
- if meet next qualified node, compare the level, if larger, refresh the global node reference and level.
- Recursively do 1 and 2 recursively for left tree and right tree
Data Structure
public class AVLTreeNode { public int data { get; set; } public AVLTreeNode leftChild { get; set; } public AVLTreeNode rightChild { get; set; } public int height { get; set; } public AVLTreeNode(int data) { this.data = data; this.height = 1; } }
Source Code
public class Result { public int MaxHight { get; set; } public AVLTreeNode ResultNode { get; set; } } // Find deepest left node public void FindDeepestLeftNode(AVLTreeNode node, bool isLeft, int height, Result result) { if (node == null) { return; } if (isLeft) { if (node.leftChild == null && node.rightChild == null && height > result.MaxHight) { result.ResultNode = node; result.MaxHight = height; } } FindDeepestLeftNode(node.leftChild, true, height + 1, result); FindDeepestLeftNode(node.rightChild, false, height + 1, result); } public AVLTreeNode GetDeepestLeftNode() { Result result = new Result() { MaxHight = 0, ResultNode = null }; FindDeepestLeftNode(root, true, 0, result); return result.ResultNode; }
Complexity
Time complexity is O(N)
Space complexity is O(N)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步