zoukankan      html  css  js  c++  java
  • 求二叉树叶子节点的个数

    tag: 二叉树

    思路:

    (1)通过先序遍历的方式求解

    (2)叶子节点的特点: 左右孩子都为空

    也可以用递归方式

    package com.zhaochao.tree;
    
    import java.util.Stack;
    
    /**
     * Created by zhaochao on 17/1/23.
     * 叶子结点的特点: 左右孩子都为空
     * 通过先序的方式找到叶子结点
     *
     */
    public class LeafNumber {
    
        int flag = 0;
    
        public int getCountsOfLeaves(TreeNode root) {
            int count = 0;
            if(root == null) {
                return count;
            }
            Stack<TreeNode> stack = new Stack<TreeNode>();
            stack.push(root);
            while(!stack.isEmpty()) {
                TreeNode node = stack.pop();
                if(node.left == null && node.right == null) {
                    count++;
                }
                if(node.right != null) {
                    stack.push(node.right);
                }
                if(node.left != null) {
                    stack.push(node.left);
                }
            }
            return count;
        }
    
        //递归求解
        public void getCountRec(TreeNode root) {
            if(root == null) {
                return;
            }
            if(root.left == null && root.right == null) {
                flag++;
            }
            getCountRec(root.left);
            getCountRec(root.right);
        }
    
        public static void main(String[] args) {
            TreeNode root = new TreeNode(0);
            TreeNode node1 = new TreeNode(1);
            TreeNode node2 = new TreeNode(2);
            TreeNode node3 = new TreeNode(3);
            TreeNode node4 = new TreeNode(4);
    
            root.left = node1;
            root.right = node2;
            node2.left = node3;
            node2.right = node4;
    
            LeafNumber test = new LeafNumber();
            int count = 0;
            count = test.getCountsOfLeaves(root);
    
            System.out.println("The number of nodes in the tree is " + count);
    
            test.getCountRec(root);
            System.out.println("Recursion : the number of nodes in the tree is " + test.flag);
    
    
        }
    
    
    }
    

      

      

  • 相关阅读:
    java包和jar包
    java异常总结
    java异常练习2
    java中的异常处理机制_函数覆盖时的异常特点
    React(三)TableBar,ToDoList,Redux案例
    React(二)组件通信
    React(二)组件通信
    React(一)起步
    React(一)起步
    Vue(二)进阶
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6346874.html
Copyright © 2011-2022 走看看