《LeetCode力扣练习》代码随想录——二叉树(完全二叉树的节点个数—Java)
刷题思路来源于 代码随想录
222. 完全二叉树的节点个数
-
二叉树-后序遍历
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/ class Solution {public int countNodes(TreeNode root) {return recursion(root);}private int recursion(TreeNode root) {if (root == null) {return 0;}TreeNode left = root.left;TreeNode right = root.right;int leftDepth = 0;int rightDepth = 0;while (left != null) {left = left.left;leftDepth++;}while (right != null) {right = right.right;rightDepth++;}if (leftDepth == rightDepth) {return (2 << leftDepth) - 1;}return recursion(root.left) + recursion(root.right) + 1;} }