Skip to content

Commit 5d0d2b9

Browse files
author
刘勋
committed
给定一个二叉树,返回它的中序 遍历
1 parent ccf94e6 commit 5d0d2b9

1 file changed

Lines changed: 68 additions & 0 deletions

File tree

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.algorithm.study.demo.algorithm.leetcode;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.Stack;
6+
7+
/**
8+
* @author xun2.liu
9+
* @title: Solution19
10+
* @projectName algorithm-study
11+
* @description: 给定一个二叉树,返回它的中序 遍历。
12+
*
13+
* 示例:
14+
*
15+
* 输入: [1,null,2,3]
16+
* 1
17+
* \
18+
* 2
19+
* /
20+
* 3
21+
*
22+
* 输出: [1,3,2]
23+
*
24+
* 来源:力扣(LeetCode)
25+
* 链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal
26+
* @date 2020/5/29 18:31
27+
*/
28+
public class Solution19 {
29+
public static class TreeNode {
30+
int val;
31+
TreeNode left;
32+
TreeNode right;
33+
TreeNode(int x) { val = x; }
34+
}
35+
public static List<Integer> inorderTraversal(TreeNode root) {
36+
List<Integer> result=new ArrayList<Integer>();
37+
Stack<TreeNode> stack=new Stack<TreeNode>();
38+
TreeNode curr=root;
39+
while(curr!=null || !stack.isEmpty()){
40+
//先遍历左子树
41+
while(curr!=null){
42+
stack.push(curr);
43+
curr=curr.left;
44+
}
45+
//取出栈顶的节点并且赋给指针
46+
curr=stack.pop();
47+
result.add(curr.val);
48+
//然后取出右子树节点
49+
curr=curr.right;
50+
}
51+
return result;
52+
}
53+
public static void main(String[] args) {
54+
TreeNode a=new TreeNode(3);
55+
TreeNode b=new TreeNode(9);
56+
TreeNode c=new TreeNode(20);
57+
TreeNode d=new TreeNode(15);
58+
TreeNode r=new TreeNode(2);
59+
a.left=b;
60+
a.right=c;
61+
c.left=d;
62+
c.right=r;
63+
List<Integer> integers = inorderTraversal(a);
64+
for (Integer integer : integers) {
65+
System.out.println(integer);
66+
}
67+
}
68+
}

0 commit comments

Comments
 (0)