首页 > 代码库 > 二叉树(5)----求二叉树节点数,递归与非递归
二叉树(5)----求二叉树节点数,递归与非递归
1、二叉树定义
typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTreeNode_t_ *m_pRight; } BTreeNode_t;
对任意一个给定子树的节点数,左子树节点数+右子树节点数+1,加1是加上根节点自身
(1)递归方式:
如果给定根节点为NULL,则返回0;
如果给定根节点不为NULL,则返回: 左子树节点数+右子树节点数+1
int GetBTreeNodesTotal( BTreeNode_t *pRoot){ if( pRoot == NULL ) return 0; return ( GetBTreeNodesTotal( pRoot->m_pLeft) + GetBTreeNodesTotal( pRoot->m_pRight) + 1); }
(2)非递归方式:
任意一种遍历方式: 前序、后序、中序、按层遍历方式都可以
前序、后序、中序、按层遍历。
二叉树(5)----求二叉树节点数,递归与非递归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。