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);
                    }
                }
            }
        }
  • 相关阅读:
    网页爬虫小记:两种方式的爬取网站内容
    AOP中使用Aspectj对接口访问权限进行访问控制
    Spring Boot应用总结更新
    SpringBoot集成mybatis配置
    经验收集
    关于阿拉伯文开发的一点经验
    关于IDataReader.GetSchemaTable的一些事情
    removing vmware debugger from visual studio
    SQL Server 2008 R2 附加数据库 “尝试打开或创建物理文件 拒绝访问”的解决办法
    Visual Studio 2013 ReportViewer Control
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/4225480.html
Copyright © 2011-2022 走看看