zoukankan      html  css  js  c++  java
  • 二叉树分层打印

    public class Node{
        int value;
        Node left;
        Node right;
    }
    int deep(Node root){
        if(root==null){
            return 0;
        }
        int leftDepth = deep(root.left);
        int rightDepth = deep(root.right);
        return rightDepth>leftDepth?rightDepth+1:leftDepth+1;
    }
    bool isFullBinTree(Node root){
          if(root==null){
             return false;
          }
          if(root.left==null&&root.right==null){
              return true;
          }
         int leftDepth = deep(root.left);
         int rightDepth = deep(root.right);
         if(leftDepth!=rightDepth){
            return false;
         }
        if(isFullBinTree(root.left)&&isFullBinTree(root.right)){
           return true;
        }else{
           return false;
        }
        
                 
    }
    
        
    
    
    
    
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            if(pRoot==null){
                return null;
            }
            ArrayList<ArrayList<Integer> > mutiLineList = new ArrayList<ArrayList<Integer> >();
            ArrayList<Integer> lineList = new  ArrayList<Integer>();
            lineList.add(pRoot.val);
            Queue<TreeNode> queque1 = new Queue<TreeNode>();//是接口还是class
            Queue<TreeNode> queque2 = new Queue<TreeNode>();
            queque1.add(pRoot);
            mutiLineList.add(lineList);
            while(!queque1.isEmpty()||!queque2.isEmpty()){
                while(!queque1.isEmpty()){
                  ArrayList<Integer> lineList1 = new  ArrayList<Integer>();
                  TreeNode treeNode1 = queque1.getFirst();
                  lineList.add(treeNode1.val);
                   if(treeNode1.left!=null){
                       queque2.add(treeNode1.left);
                   }
                  if(treeNode1.right!=null){
                      queque2.add(treeNode1.right);
                  } 
                }
                mutiLineList.add(lineList1);
                while(!queque2.isEmpty()){
                  ArrayList<Integer> lineList2 = new  ArrayList<Integer>();
                  TreeNode treeNode2 = queque2.getFirst();
                  lineList.add(treeNode2.val);
                  if(treeNode2.left!=null){
                       queque1.add(treeNode2.left);
                   }
                  if(treeNode2.right!=null){
                      queque1.add(treeNode2.right);
                  }
                  
                }
                mutiLineList.add(lineList2);
                
            }
            
            return mutiLineList;
        
        }
  • 相关阅读:
    nvalid bound statement (not found)
    小程序
    maven启动项目时报错
    创建Maven项目出错
    小程序的tab标签实现效果
    C# 异步
    C#中计算时间差
    linq筛选唯一
    GMap.net控件学习记录
    nodepad++ 正则 替换
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/12984195.html
Copyright © 2011-2022 走看看