IT技術小屋

          秋風秋雨,皆入我心

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            38 隨筆 :: 1 文章 :: 19 評論 :: 0 Trackbacks
          求二叉搜索樹的中序后繼節點

          分析:
          1. 如果目標節點的右子樹不為空,則返回右子樹的最小節點;
          2. 如果目標節點的右子樹為空,則從根節點開始遍歷。
          實現代碼如下:
           1 public class Solution {
           2     public TreeNode inOrderSuccessor(TreeNode root, TreeNode target) {
           3         if (target == nullreturn null;
           4         if (target.right != nullreturn minValue(target.right);
           5         TreeNode succ = null;
           6         while (root != null) {
           7             if (target.val < root.val) {
           8                 succ = root;
           9                 root = root.left;
          10             } else if (target.val > root.val) {
          11                 root = root.right;
          12             } else {
          13                 break;
          14             }
          15         }
          16         return succ;
          17     }
          18 
          19     private TreeNode minValue(TreeNode root) {
          20         while (root.left != null) {
          21             root = root.left;
          22         }
          23         return root;
          24     }
          25 }
          posted on 2013-12-27 11:06 Meng Lee 閱讀(211) 評論(0)  編輯  收藏 所屬分類: 待字閨中
          主站蜘蛛池模板: 海晏县| 洛扎县| 庆云县| 乃东县| 岑溪市| 大悟县| 扎兰屯市| 开平市| 民乐县| 新巴尔虎左旗| 嵩明县| 泊头市| 宜章县| 大关县| 临高县| 新泰市| 澄城县| 乐山市| 白玉县| 镇平县| 辽阳县| 高雄县| 建始县| 和林格尔县| 蒙阴县| 广西| 万年县| 葫芦岛市| 澄迈县| 藁城市| 龙川县| 银川市| 大连市| 大田县| 平塘县| 建水县| 城步| 平谷区| 万荣县| 辽阳县| 潞城市|