首页 > 其他分享 >二叉树的遍历方式(创建,遍历,执行)

二叉树的遍历方式(创建,遍历,执行)

时间:2022-09-26 09:24:06浏览次数:52  
标签:NODE lchild 遍历 创建 二叉树 rchild NULL root

// binarytree.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;
typedef struct NODE {
    char ch;
    NODE* lchild;
    NODE* rchild;
}NODE;
void Recursion(NODE* root) {
    if (root == NULL)    return;
    cout << root->ch << endl;
    Recursion(root->lchild);
    Recursion(root->rchild);
}
void Createbinary() {
    NODE node1 = { 'A' , NULL , NULL};
    NODE node2 = { 'B' , NULL , NULL };
    NODE node3 = { 'C' , NULL , NULL };
    NODE node4 = { 'D' , NULL , NULL };
    NODE node5 = { 'E' , NULL , NULL };
    NODE node6 = { 'F' , NULL , NULL };
    NODE node7 = { 'G' , NULL , NULL };
    NODE node8 = { 'H' , NULL , NULL };

    node1.lchild = &node2;
    node1.rchild = &node6;
    node2.rchild = &node3;
    node3.lchild = &node4;
    node3.rchild = &node5;
    node6.rchild = &node7;
    node7.lchild = &node8;
    Recursion(&node1);
}
int main()
{
    //std::cout << "Hello World!\n";
    Createbinary();
    
    return 0;
}

  

 

先序遍历结果:

 

 中序遍历:

 

 后序遍历:

 

 

//求叶子结点的数目

// binarytree.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;
typedef struct NODE {
    char ch;
    NODE* lchild;
    NODE* rchild;
}NODE;
void Recursion(NODE* root,int* res) {
    if (root == NULL)    return;

    if (root->lchild == NULL && root->rchild == NULL) {
        (*res)++;
    }
    Recursion(root->lchild,res);
    Recursion(root->rchild,res);
    //cout << root->ch << endl;
}
void Createbinary() {
    NODE node1 = { 'A' , NULL , NULL};
    NODE node2 = { 'B' , NULL , NULL };
    NODE node3 = { 'C' , NULL , NULL };
    NODE node4 = { 'D' , NULL , NULL };
    NODE node5 = { 'E' , NULL , NULL };
    NODE node6 = { 'F' , NULL , NULL };
    NODE node7 = { 'G' , NULL , NULL };
    NODE node8 = { 'H' , NULL , NULL };

    node1.lchild = &node2;
    node1.rchild = &node6;
    node2.rchild = &node3;
    node3.lchild = &node4;
    node3.rchild = &node5;
    node6.rchild = &node7;
    node7.lchild = &node8;
    int leafcount = 0;
    
    Recursion(&node1,&leafcount);
    cout << leafcount;
}
int main()
{
    //std::cout << "Hello World!\n";
    Createbinary();
    
    return 0;
}

  

 

标签:NODE,lchild,遍历,创建,二叉树,rchild,NULL,root
From: https://www.cnblogs.com/lutixiagit/p/16729734.html

相关文章

  • 创建数据库表
    在询问窗口中编写创建数据库的代码:注意事项:使用英文,表的名称和字段,尽量使用飘号 ‘’(此页面看不出来)括起来字符串使用单引号括起来所有的语句后面加,(英文的)最......
  • 迭代器遍历对象 快速失败和安全失败
    一、快速失败(fail—fast)在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出ConcurrentModificationException。原理:迭......
  • 创建并部署自己的第一个区块链智能合约
    注册metaMask钱包1.下载并安装浏览器插件最好是找个梯子......
  • 线索化二叉树
    将数列{1,3,6,8,10,14}构建成一颗二叉树问题分析当我们对上面的二叉树进行中序遍历时,数列为{8,3,10,1,6,14}但是6,8,10,14这几个节点的左右......
  • 顺序存储二叉树
    简介从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组特点顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为......
  • python-python -m venv创建虚拟环境
    python-mvenv<虚拟环境名称>windows环境进入虚拟环境......
  • 二叉树的最大深度
    二叉树的最大深度一、题目描述给定一个二叉树,找出其最大深度。二叉树的最大深度为根节点到最远叶子节点的最长路径上的节点数。叶子节点时没有字节点的。实例:给定二叉......
  • MySQL数据表的创建、修改、删除及基本操作
    1.在mysql中,可以使用 CREATETABLE 语句创建表。其语法格式为:转自:https://www.cnblogs.com/bigbigbigo/p/10917429.html/*建表的语法*/createtable[ifnotexist]......
  • 数组遍历的方法
    数组遍历的方法forEach类似与for循环不会改变原数组将数组中的2全部加1constarr=[1,2,3,2]varnewArr=[]arr.forEach(v=>{if(v===2){v=v+1}......
  • MySQL数据库的创建、修改、删除及基本操作
    1.MySQL数据库的创建,语法格式如下:CREATEDATABASE[IFNOTEXISTS]<数据库名>[[DEFAULT]CHARACTERSET<字符集名>][[DEFAULT]COLLATE<校对规则名>];[]中的内......