zoukankan      html  css  js  c++  java
  • 二叉树的定义

    /** class for nodes used in a binary tree */
    
    package dataStructures;
    
    public class BinaryTreeNode {
        // package visible data members
        Object element;
        BinaryTreeNode leftChild; // left subtree
        BinaryTreeNode rightChild; // right subtree
    
        // constructors
        public BinaryTreeNode() {
        }
    
        public BinaryTreeNode(Object theElement) {
            element = theElement;
        }
    
        public BinaryTreeNode(Object theElement, BinaryTreeNode theleftChild,
                BinaryTreeNode therightChild) {
            element = theElement;
            leftChild = theleftChild;
            rightChild = therightChild;
        }
    
        // accessor methods
        public BinaryTreeNode getLeftChild() {
            return leftChild;
        }
    
        public BinaryTreeNode getRightChild() {
            return rightChild;
        }
    
        public Object getElement() {
            return element;
        }
    
        // mutator methods 设值方法
        public void setLeftChild(BinaryTreeNode theLeftChild) {
            leftChild = theLeftChild;
        }
    
        public void setRightChild(BinaryTreeNode theRightChild) {
            rightChild = theRightChild;
        }
    
        public void setElement(Object theElement) {
            element = theElement;
        }
    
        // output method
        public String toString() {
            return element.toString();
        }
        
    }

     求二叉树的节点数最多的层

    public static int maxLevel(BinaryNode<Integer> t){
            if(t==null){
                return 0;
            }
            BinaryNode<Integer> endOfLevel = new BinaryNode<Integer>();
            ArrayDeque<BinaryNode<Integer>> p = new ArrayDeque<>();
            p.add(t);
            p.add(endOfLevel);
            int numOfNodes = 0;
            int maxLevel = 0;
            int maxNum = 0;
            int currentLevel = 1;
            while(true){
                BinaryNode<Integer> temp = p.poll();
                if(temp.equals(endOfLevel)){
                    if(numOfNodes>maxNum){
                        maxNum = numOfNodes;
                        maxLevel = currentLevel;
                    }else if(numOfNodes==0){
                        return maxLevel;
                    }
                    currentLevel++;
                    numOfNodes = 0;
                    p.add(endOfLevel);
                }else{
                    numOfNodes++;
                    if(temp.left!=null){
                        p.add(temp.left);
                    }
                    if(temp.right!=null){
                        p.add(temp.right);
                    }
                }
            }
        }
  • 相关阅读:
    最新Sublime Text 2 激活 汉化
    深入理解JPEG图像格式Jphide隐写
    入CTF坑必不可少的地方-保持更新
    v0lt CTF安全工具包
    浅析弱口令
    尽最大可能分析上传源码及漏洞利用方式
    最新Internet Download Manager (IDMan) 6.25 Build 20 32位 64位注册破解补丁
    c# double保留2位小数
    VS2010 & Visual Assist X 的配合
    C#的回调被C++调用
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/4225480.html
Copyright © 2011-2022 走看看