File tree Expand file tree Collapse file tree
src/main/java/com/algorithm/study/demo/algorithm/leetcode Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments