IT技術小屋

          秋風秋雨,皆入我心

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            38 隨筆 :: 1 文章 :: 19 評論 :: 0 Trackbacks
          Given a binary tree, return the inorder traversal of its nodes' values.
          For example:
          Given binary tree {1,#,2,3},
             1
              \
               2
              /
             3
          return [1,3,2].
          Note: Recursive solution is trivial, could you do it iteratively?

          切記p節點初始時指向root.left。代碼如下:
           1 public class BinaryTreeInorderTraversal {
           2     public ArrayList<Integer> inorderTraversal(TreeNode root) {
           3         ArrayList<Integer> inOrder = new ArrayList<Integer>();
           4         if (root == null)
           5             return inOrder;
           6         Stack<TreeNode> s = new Stack<TreeNode>();
           7         s.add(root);
           8         TreeNode p = root.left;
           9         while (!s.empty()) {
          10             while (p != null) {
          11                 s.add(p);
          12                 p = p.left;
          13             }
          14             TreeNode n = s.pop();
          15             inOrder.add(n.val);
          16             p = n.right;
          17             if (p != null) {
          18                 s.add(p);
          19                 p = p.left;
          20             }
          21         }
          22         return inOrder;
          23     }
          24 }
          posted on 2014-01-04 11:17 Meng Lee 閱讀(175) 評論(0)  編輯  收藏 所屬分類: Leetcode
          主站蜘蛛池模板: 达日县| 五常市| 阳信县| 河曲县| 兴义市| 江都市| 井研县| 奉贤区| 宁远县| 曲水县| 梁河县| 石林| 西乡县| 江山市| 公安县| 咸丰县| 黄浦区| 惠安县| 海林市| 日照市| 饶阳县| 大连市| 阿合奇县| 庄浪县| 康定县| 登封市| 平谷区| 蓬安县| 乌拉特中旗| 泽州县| 禄丰县| 永济市| 神农架林区| 高台县| 松阳县| 胶南市| 茌平县| 桂林市| 龙川县| 钟山县| 资中县|