<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • 二叉樹的鏈式存儲結構就是用鏈表來表示一棵二叉樹,即用鏈表來指示元素之間的邏輯關系。通常有兩種存儲形式:

    鏈表中每個結點由三個域組成,除了數據域之外,還有兩個指針域,分別用來給出該結點的左孩子和右孩子所在的存儲地址。
    鏈表中每個結點由四個域組成,除了數據域之外,還有三個指針域,分別用來給出該結點的左孩子、右孩子和雙親結點所在的存儲地址。

    class NodeL
    {
    Node root;
    public static int index;
    public Node CreateBTree( int[] a){ Node root = null; if(a[index]!='#'){ root =
    new Node(a[index]); index++; root.setLChild(CreateBTree(a)); index++;
    root.setRChild(CreateBTree(a)); } return root; } int getnodeNumber(Node n) {
    if(n==null) return 0; return getnodeNumber(n.LeftC)+getnodeNumber(n.RightC)+1;
    } int getLNumber(Node n) { if(n==null) return 0;
    if(n.LeftC==null&&n.RightC==null) return 1; return
    getLNumber(n.LeftC)+getLNumber(n.RightC); } //線序遍歷 void preorder(Node n) {
    if(n==null) return ; else { System.out.print(n.data+" "); preorder(n.LeftC);
    preorder(n.RightC); } } //中序遍歷 void inorder(Node n) { if(n==null) return ; else
    { inorder(n.LeftC); System.out.print(n.data+" "); inorder(n.RightC); } } //后續遍歷
    void postorder(Node n) { if(n==null) return ; else { postorder(n.LeftC);
    postorder(n.RightC); System.out.print(n.data+" "); } } //按層次遍歷 void
    Printnode(Node n) { Node root = n; Queue <Node> queue = new
    LinkedList<Node>();//用來存放樹的結點,先進先出 LinkedList<Node> list = new
    LinkedList<Node>(); queue.offer(root); //將根節點入隊 while(!queue.isEmpty()){ Node
    pre = queue.poll(); list.add(pre); //將結點入鏈 if(pre.LeftC!=null)
    queue.offer(pre.LeftC); if(pre.RightC!=null) queue.offer(pre.RightC); }
    Iterator<Node> it = list.iterator();//方便遍歷結點 while(it.hasNext()){ Node cur =
    (Node)it.next(); System.out.print(cur.data+", "); } } //求二叉樹的深度 int
    getDath(Node n) { if(n==null) return 0; int l=getDath(n.LeftC); int
    r=getDath(n.RightC); return Math.max(l, r)+1; } //求二叉樹中以元素值為X的節點為根的子數的 void
    getXnumber(Node n,int x) { if(n==null) return ; else { if(n.data==x) {
    System.out.println("元素值為 "+x+" 的子數為: "+ getDath(n)); } if(n.LeftC!=null)
    getXnumber(n.LeftC,x); if(n.RightC!=null) getXnumber(n.RightC,x); } }
    }
    測試

    public static void text2()
    {
    NodeL tree = new NodeL();
    int[] a = new
    int[]{10,3,2,’#’,’#’,4,’#’,9,8,’#’,’#’,9,’#’,’#’,18,13,’#’,’#’,21,’#’,’#’ };
    tree.root=tree.CreateBTree(a);
    System.out.print(“先序遍歷:”);
    tree.preorder(tree.root);
    System.out.print("\n中序遍歷:");
    tree.inorder(tree.root);
    System.out.print("\n后序遍歷:");
    tree.postorder(tree.root);
    System.out.println();
    System.out.print("層序遍歷:"); tree.Printnode(tree.root); System.out.println();
    System.out.println("結點數:"+tree.getnodeNumber(tree.root));
    System.out.println("葉子數:"+tree.getLNumber(tree.root));
    System.out.println("深度:"+tree.getDath(tree.root));
    tree.getXnumber(tree.root,2); }

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频