1. 程式人生 > >二叉排序樹的建立和各種遍歷方法-java

二叉排序樹的建立和各種遍歷方法-java

轉載自:https://www.2cto.com/kf/201608/534396.html

二叉排序樹的定義:

二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹:
(1)若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;
(2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;
(3)左、右子樹也分別為二叉排序樹;
(4)沒有鍵值相等的結點。
如下:

這裡寫圖片描述
遍歷方法:

樹的遍歷方法一般有如下幾種方法:
(1)層次遍歷:按照樹的層次進行遍歷,如圖樹:8、3、10、1、6、14、4、7、13
(2)先序遍歷:節點遍歷順序為當前節點、左節點、右節點。如圖樹:8、3、1、6、4、7、10、14、13
(3)中序遍歷:節點遍歷順序為左節點、當前節點、右節點。如圖樹:1、3、4、6、7、8、10、13、14
(4)後續遍歷:節點遍歷順序為左節點、右節點、當前節點。如圖樹:1、4、7、6、3、8、13、14、10

程式碼實現:
(1)節點定義:Node.java?
12345678910111213141516171819202122232425262728293031323334package com.lee.wait;/*** Node 二叉樹上的節點* @author wait**/public class Node {/*** 節點的資料,這裡我們用一個int表示*/public int data;/*** 節點的左孩子*/public Node left;/*** 節點的右孩子*/public Node right;/*** 建構函式,data初始化節點的值* @param data*/public Node(int data){
this.data=data;}/*** 預設建構函式,data=0*/public Node(){this(0);}}

(2)二叉排序樹的類BTree.java

?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263

相關推薦

排序建立各種方法-java

轉載自:https://www.2cto.com/kf/201608/534396.html二叉排序樹的定義:二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹:(1)若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;(2)若右子樹不空,則右子樹上所有結點的值均大於

go語言實現排序及其前序

結構  左右指標和存值的一個int type AVL struct{ left,right *AVL value int } 獲取左右節點的指標 func (a *AVL)getLeft()(*AVL) { if a.left != nil{ return

劍指Offer- 搜尋的後序序列(Java實現)

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 思路分析: BST的後序序列的合法序列是,對於一個序列S,最後一個元素是x (也就是根),如果去掉最後一個元素的序列

劍指Offer面試題33搜尋的後序序列java

題目:輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 分析:在後序遍歷序列中,最後一個數字是樹的根節點的值。陣列中前面的數字可以分為兩部分:第一部分是左子樹節點的值,它

建立各種的實現

package com.ywx.count; /** * * @author Vashon * data:20150323 * 題目:二叉樹的建立和二叉樹的先序遍歷、中序遍歷、後序遍歷

程式設計基礎79 給定排序結構陣列求整棵

1099 Build A Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: T

劍指offer66題--Java實現,c++實現python實現 23.搜尋的後序序列

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 C++ class Solution { public: bool VerifySquenceOfBST(vector<in

排序建立(JAVA實現)

      最近看了一下二叉排序樹的建立,自己寫了一段程式碼,用來建立二叉排序樹,給定一個數組,對這個陣列中的數字進行建立二叉排序樹。分兩種情況:      1  陣列中的數字是隨機的,也就是說沒有順序 eg : int  a [ ] = {3,1,2,5,0,7,9,8}

[LintCode]95.驗證查詢排序搜尋) 中序

給定一個二叉樹,判斷它是否是合法的二叉查詢樹(BST) 一棵BST定義為: 節點的左子樹中的值要嚴格小於該節點的值。節點的右子樹中的值要嚴格大於該節點的值。左右子樹也必須是二叉查詢樹。一個節點的樹

Java】 劍指offer(33) 搜尋的後序序列 《劍指Offer》Java實現合集 《劍指Offer》Java實現合集

本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集   題目    輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。 思路   二叉

【劍指Offer】23搜尋的後序序列

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 時間限制:1秒;空間限制:32768K 解題思路 BST後序遍歷的特點是: 大小:L樹 < Root <R樹 排序

劍指offer(九) 棧的壓入彈出序列,從上往下列印搜尋的後序序列

棧的壓入、彈出序列 題目描述 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出

劍指offer 搜尋的後序序列

輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 package offer.verifySquenceOfBST; import java.util.ArrayList; public class

[劍指offer] --24.搜尋的後序序列

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 public class Solution { public boolean VerifySquenceOfBST(int [

判斷一個序列是否是搜尋的後序,C++實現

https://www.cnblogs.com/wanglei5205/p/8684408.html 原創文章,轉載請註明出處! 本題牛客網地址 部落格文章索引地址 部落格文章中程式碼的github地址 1.題目      

五:搜尋的後序序列

/** * 題目:二叉搜尋樹的後序遍歷序列 * 描述:輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同 *   二叉搜尋樹,又叫二叉排序樹,它或者是一顆空樹,或者具有以下性

《劍指offer》系列 搜尋的後序序列(Java

連結 牛客:二叉搜尋樹的後序遍歷序列 題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 思路 後序遍歷數字的順序小大中,這裡面的小和大其實是子樹的序列,中是單個數字,小

【劍指offer】搜尋的後序

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 二叉搜尋樹是左子樹都比跟小,右子樹都比跟大 陣列的最後一個數字為root,然後一串比root小的為左子樹,一串比root大的為右子樹,

11 搜尋的後序序列

0 引言 題目:輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。二叉搜尋樹的概念:若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;它的

劍指offer_搜尋的後序序列

題目描述 輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的陣列的任意兩個數字都互不相同。 # -*- coding:utf-8 -*- class Solution:     def VerifySque