遍历递归实现
中序遍历
| public static List<Integer> inorderTraversal(TreeNode root){ |
| List<Integer> nodes = new LinkedList<>(); |
| |
| dfs(root, nodes); |
| |
| return nodes; |
| } |
| |
| private static void dfs(TreeNode root, List<Integer> nodes) { |
| if(root != null){ |
| dfs(root.left, nodes); |
| nodes.add(root.val); |
| dfs(root.right, nodes); |
| } |
| } |
前序遍历
只用将dfs
中nodes.add(root.val)
移至dfs(root.left, nodes)
前
后遍历
只用将dfs
中nodes.add(root.val)
移至dfs(root.right, nodes)
后
非递归实现
中序遍历
| public static List<Integer> inorderTraversal(TreeNode root){ |
| List<Integer> nodes = new LinkedList<>(); |
| Deque<TreeNode> stack = new ArrayDeque<>(); |
| TreeNode cur = root; |
| |
| while(cur != null || !stack.isEmpty()){ |
| while(cur != null){ |
| stack.push(cur); |
| cur = cur.left; |
| } |
| |
| cur = stack.pop(); |
| nodes.add(cur.val); |
| cur = cur.right; |
| } |
| |
| return nodes; |
| } |
先序遍历
| public static List<Integer> preOrderTraversal(TreeNode root){ |
| List<Integer> nodes = new LinkedList<>(); |
| Deque<TreeNode> stack = new ArrayDeque<>(); |
| TreeNode cur = root; |
| |
| while(cur != null || !stack.isEmpty()){ |
| while(cur != null){ |
| nodes.add(cur.val); |
| stack.push(cur); |
| cur = cur.left; |
| } |
| |
| cur = stack.pop(); |
| cur = cur.right; |
| } |
| |
| return nodes; |
| } |
后续遍历
| public static List<Integer> postOrderTraversal(TreeNode root){ |
| List<Integer> nodes = new LinkedList<>(); |
| Deque<TreeNode> stack = new ArrayDeque<>(); |
| TreeNode cur = root, prev = null; |
| |
| while(cur != null || !stack.isEmpty()){ |
| while(cur != null){ |
| stack.push(cur); |
| cur = cur.left; |
| } |
| |
| cur = stack.peek(); |
| if(cur.right != null && cur.right != prev){ |
| cur = cur.right; |
| }else{ |
| stack.pop(); |
| nodes.add(cur.val); |
| prev = cur; |
| cur = null; |
| } |
| } |
| |
| return nodes; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具