日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法之完全二叉树的节点个数

發布時間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法之完全二叉树的节点个数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構與算法之完全二叉樹的節點個數


目錄

  • 數據結構與算法之完全二叉樹的節點個數

  • 1. 數據結構與算法之完全二叉樹的節點個數

    (一)思路
  • 先遍歷左邊界獲得樹的高度h
  • 遍歷右子樹的左邊界,看看到沒到最后一層,如果到了,那么左子樹是滿二叉樹,右子樹也可以這樣分析
  • 同理,遍歷右子樹的左邊界,如果沒有到最后一層,那么右子樹是滿二叉樹,左子樹也可以這樣分析。

  • (二) 代碼實現
    public class Code_CompleteTreeNodeNumber {public static class Node {public int value;public Node left;public Node right;public Node(int data) {this.value = data;}}public static int nodeNum(Node head) {if (head == null) {return 0;}return bs(head, 1, mostLeftLevel(head, 1));}public static int bs(Node node, int level, int h) {if (level == h) {return 1;}if (mostLeftLevel(node.right, level + 1) == h) {return (1 << (h - level)) + bs(node.right, level + 1, h);} else {return (1 << (h - level - 1)) + bs(node.left, level + 1, h);}}public static int mostLeftLevel(Node node, int level) {while (node != null) {level++;node = node.left;}return level - 1;}public static void main(String[] args) {Node head = new Node(1);head.left = new Node(2);head.right = new Node(3);head.left.left = new Node(4);head.left.right = new Node(5);head.right.left = new Node(6);System.out.println(nodeNum(head));}}

    總結

    以上是生活随笔為你收集整理的数据结构与算法之完全二叉树的节点个数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。