二叉树的前序、中序、后序(相关面试题)

二叉树代码的核心是递归算法。
递归算法1、需要终止条件
2、需要递推公式
二叉树的遍历有3种形式,前序、中序、后序
前序:根–》左–》右
中序:左–》根–》右
后序:左–》右–》根
代码很简单这里就不贴了,有需要的小伙伴评论下留言哦
下面说下二叉树相关题目
1、求结点个数
代码如下

int countNodes(TreeNode* root) {
        if(root==NULL)
        {
            return 0;
        }
        else
        {   
            return (countNodes(root->left)+countNodes(root->right)+1);
        }
    }

递归方式的代码很简单,需要注意的一点就是要加上1(表示根结点)
2、求叶子结点个数
代码如下

int countNodes(TreeNode* root) {
        if(root==NULL)
        {
            return 0;
        }
        else
        {   
            return (countNodes(root->left)+countNodes(root->right));
        }
    }

其实求结点个数和求叶子结点代码基本差不多,只是求叶子结点个数时少加一个1,那么什么是叶子结点,叶子结点就是没有孩子的结点,别看只是少加了一个1,结果的差别可是很大。
以如下这个二叉树来看:
在这里插入图片描述
只是少加了一个1结果的差距还是很大的,这就是递归的特性带来的
3、求二叉树的高度

int   CountLeafNode(TreeNode* root)
{
	if(root==NULL)
	{
		return 0;
	}
	else
	{
		int left=CountLeafNode(root->left);
		int right=CountLeafNode(root->right);
		return (left  > right ? left : right) + 1;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值