posts - 73,  comments - 55,  trackbacks - 0
          // 建立二叉樹并先根遍歷的代碼
          public ? class ?BinaryTreeTest? {
          ?
          public ? static ? void ?main(String?args[])? { // 主方法
          ??BinaryTreeTest?b? = ? new ?BinaryTreeTest();
          ??
          int ?data[]? = ? {? 12 ,? 11 ,? 34 ,? 45 ,? 67 ,? 89 ,? 56 ,? 43 ,? 22 ,? 98 ?} ;
          ??BinaryTree?root?
          = ? new ?BinaryTree(data[ 0 ]);

          ??System.out.print(
          " 二叉樹的中的數據:   " );
          // 建立二叉樹
          ?? for ?( int ?i? = ? 1 ;?i? < ?data.length;?i ++ )? {
          ???root.insertTree(root,?data[i]);
          ???System.out.print(data[i?
          - ? 1 ]? + ? " ; " );
          ??}


          ??System.out.println(data[data.length?
          - ? 1 ]);

          ??
          int ?key? = ?Integer.parseInt(args[ 0 ]);

          ??
          if ?(b.searchkey(root,?key))? {
          ???System.out.println(
          " 找到了: " ? + ?key);
          ??}
          ? else ? {
          ???System.out.println(
          " 沒有找到: " ? + ?key);
          ??}

          ?}


          ?
          public ? boolean ?searchkey(BinaryTree?root,? int ?key)? { // 查詢
          ?? boolean ?bl? = ? false ;
          ??
          if ?(root? == ? null )? {
          ???bl?
          = ? false ;
          ???
          return ?bl;
          ??}
          ? else ? if ?(root.data? == ?key)? {
          ???bl?
          = ? true ;
          ???
          return ?bl;
          ??}
          ? else ? if ?(key? >= ?root.data)? {
          ???
          return ?searchkey(root.rightpoiter,?key);
          ??}

          ??
          return ?searchkey(root.leftpoiter,?key);
          ?}

          }


          class ?BinaryTree? { // 二叉樹類
          ? int ?data;

          ?BinaryTree?leftpoiter;

          ?BinaryTree?rightpoiter;

          ?BinaryTree(
          int ?data)? {
          ??
          this .data? = ?data;
          ??leftpoiter?
          = ? null ;
          ??rightpoiter?
          = ? null ;
          ?}


          ?
          public ? void ?insertTree(BinaryTree?root,? int ?data)? { // 插入節點
          ?? if ?(data? >= ?root.data)? {
          ???
          if ?(root.rightpoiter? == ? null )? {
          ????root.rightpoiter?
          = ? new ?BinaryTree(data);
          ???}
          ? else ? {
          ????insertTree(root.rightpoiter,?data);
          ???}

          ??}
          ? else ? {
          ???
          if ?(root.leftpoiter? == ? null )? {
          ????root.leftpoiter?
          = ? new ?BinaryTree(data);
          ???}
          ? else ? {
          ????insertTree(root.leftpoiter,?data);
          ???}

          ??}

          ?}

          }

          // ?end

          講解:一個尋找關鍵字--searchkey
          另一個是插入一個結點:insertTree
          另外這是一個完全的先序遍歷二叉樹的語法。先根結點,再左結點,如無再右結點,如些加歸至搜索完畢。??

          posted on 2007-02-27 11:41 保爾任 閱讀(415) 評論(0)  編輯  收藏 所屬分類: Arithmetic & Data Structure

          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 邵东县| 云南省| 方山县| 盐池县| 墨玉县| 昌邑市| 龙海市| 三都| 渭源县| 郸城县| 合水县| 庆城县| 山阴县| 扎赉特旗| 东明县| 齐齐哈尔市| 拉萨市| 金阳县| 荔浦县| 亳州市| 邛崃市| 邵东县| 卢龙县| 宾川县| 凌云县| 莲花县| 玛多县| 彭泽县| 青铜峡市| 剑阁县| 道真| 南丰县| 江口县| 油尖旺区| 商丘市| 马尔康县| 福建省| 昆山市| 保靖县| 来宾市| 仪征市|