二叉树的生成

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;
namespace ConsoleApplication4
{
    class Program
{
        static void Main(string[] args)
{
            personalInfo p1 = new personalInfo("1", "1");
            personalInfo p2 = new personalInfo("2", "2");
            personalInfo p3 = new personalInfo("3", "3");
            personalInfo p4 = new personalInfo("", "");
            personalInfo p31 = new personalInfo("31", "31");
            personalInfo p32 = new personalInfo("32", "32");
            personalInfo p33 = new personalInfo("", "");
            personalInfo p321 = new personalInfo("", "");
            personalInfo p311 = new personalInfo("", "");
            personalInfo p21 = new personalInfo("", "");
            personalInfo p11 = new personalInfo("11", "11");
            personalInfo p12 = new personalInfo("", "");
            personalInfo p111 = new personalInfo("", "");
            List<personalInfo> list = new System.Collections.Generic.List<personalInfo>();
            list.AddRange(new personalInfo[]{p1,p2,p3,p4,p31,p32,p33,p321,p311,p21,p11,p12,p111});
            JiaPu j = new JiaPu(list);
            note phead = null;
            int index = j.CreateTree(ref phead, 0, 13);
}
        public struct personalInfo
{
            public personalInfo(string name, string Id)
{
                this.name = name;
                this.Id = Id;
}
            public string name;
            public string Id; // Id is empty or null, that means, no the person.
}
        public class note
{
            public personalInfo data;
            public note lChild, rChild;
}
        public class JiaPu
{
            List<personalInfo> persons;
           // int index = 0;
            public JiaPu(List<personalInfo> persons)
{
                this.persons = persons;
}
            public int CreateTree(ref note nNode,int index, int length)
{
                if(index>=length)
{
                    nNode= null;
                    return index;
}
                if (string.IsNullOrEmpty(persons[index].Id))
{
                    nNode = null;
                    return index;
}
                nNode = new note();
nNode.data = persons[index];

                index = CreateTree(ref nNode.lChild, ++index, length);

                index = CreateTree(ref nNode.rChild, ++index, length);
                return index;
}
}

}
}
时间: 2024-09-30 18:35:46

二叉树的生成的相关文章

jS生成二叉树,二叉树的遍历,查找以及插入

js递归,二叉树的操作 //递归算法n次幂 function foo(n) { if (n == 1) { return 1; } else { return n * foo(n - 1); } } //console.log(foo(3));var nodes = { name: 'root', childs: [ { name: 'a1' }, { name: 'a2' }, { name: 'a3' }, { name: 'b1' }, { name: 'b2' }, { name: 'b

如何由二叉树的先序和中序序列画出二叉树

今天数据结构的考试有这个题,做了好久,下来后,我好好地在网上查了一下,并结合我自己的理解,总结出来了一个比较好理解的方法.这个方法可以说做起这样的题又快又准. (概括为一个口诀:先序放中间,中序分两边)  基本思想就是递归:1.取出先序的第一个节点.(先序中的节点为根节点)2.用第一个节点可以将中序分成左右子树,然后又取出先序的第二个节点   再次将左右子树再次划分,3,当将中序全部划分为单个点时就结束.例如:假设一颗二叉树的先序序列是:EBADCFHGIKJ. 中序序列为:ABCDEFGHIJ

如何在网络中传输二叉树(C++源代码实现)

前些日子有朋友遇到这个问题来问我,我觉得有点意思,便实现了代码,写篇文章做个总结,与网友分享. 需求: 实现两个API,在客户端:传入一个二叉树的根结点指针,输出可以在网络中传输的ASCII串.在服务器端:根据传入的ASCII串来解析生成一个二叉树,返回二叉树的根结点指针. 思路: 看到这个问题,首先想到的是二叉树补全法,将这课二叉树补全,变成一颗完全二叉树,再使用数组进行存储,写入文件中.这样做需要在节点中增加一个属性,标记是否为补全的节点.这种方法不太合理,因为使用了补全操作,对于一颗很不规

数据结构与算法(二叉树)

二叉树的存储结构 二叉树的存储可分为两种:顺序存储结构和链式存储结构. 1.      顺序存储结构 把一个满二叉树自上而下.从左到右顺序编号,依次存放在数组内,可得到图6.8(a)所示的结果.设满二叉树结点在数组中的索引号为i,那么有如下性质. (1) 如果i = 0,此结点为根结点,无双亲. (2) 如果i > 0,则其双亲结点为(i -1) / 2 .(注意,这里的除法是整除,结果中的小数部分会被舍弃.) (3) 结点i的左孩子为2i + 1,右孩子为2i + 2. (4) 如果i >

数据结构之二叉树的深度优先遍历

可以将二叉树的遍历方式分为两类: 一:深度 先序遍历 中序编列 后序遍历 二.广度(也就是从左往右) 层序遍历 下面是深度的三种遍历方式: #include<iostream> using namespace std; typedef struct BitNode{ char data; struct BitNode *lchild, *rchild; }BitNode,*BiTree; void CreateBiTree(BiTree &T); void PreOrderTraver

图像压缩算法简要说明

图像压缩的目的是减少图像的不相关性和冗余性使得其能够以有效的形式存储或者传输.图像压缩分为有损压缩和无损压缩,无损图像压缩常用于档案资料.医学.工程制图.剪贴画和漫画.有损图像压缩,对于低比特流的传输条件下常使用.有损图像压缩对于那些可以牺牲少许的图像质量而希望获得低比特传输的图像具有很广泛的应用. 图像的压缩方法就是研究如何减少或去掉数据中冗余部分以减小数据的存储空间,图像压缩中数据冗余主要包含以下几种: 1.编码冗余: 以灰度图像为例,像素点的取值范围是[0,255],而对于一幅图像来说,其

hihocoder 1342 Full Binary Tree Picture【完全二叉树】

转自http://www.jianshu.com/p/e37495f72cf6 hihocoder 1342 解释:题目描述了一种用ASCII码绘制的满二叉树,然后将树的根设置在一个特殊坐标轴的原点(0,0),坐标轴x向下为正向,y向右是正向.树的每个树枝与节点都占用1*1的大小.现在需要求在坐标轴中任意画一个矩形,里面会有多少个树的节点.例如样例输入中,对于(0,0)与(2,2)形成的矩形里面,包含有根节点和它的右叶子节点,所以输出的是2. 分析:1.这是是一个二叉树的问题,肯定要构造树结构,

ICP算法(Iterative Closest Point迭代最近点算法)

标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做点云匹配,需要用c++实现ICP算法,下面是简单理解,期待高手指正. ICP算法能够使不同的坐标下的点云数据合并到同一个坐标系统中,首先是找到一个可用的变换,配准操作实际是要找到从坐标系1到坐标系2的一个刚性变换. ICP算法本质上是基于最小二乘法的最优配准方法.该算法重复进行选

2.四则运算03

题目: 老师提出了新的要求: 1.学生写的程序必须能判定用户的输入答案是否正确, 例如程序输出:20 – 5 = ?用户输入15,那么程序就会反馈正确,然后继续出题.直到 30 道题目结束,程序最后告诉用户作对了几道题. 2.程序必须能处理四种运算的混合算式: 20 – 5 * 2 =?           正确答案是10. 20– 5 * 2 + 9 / 3 = ?   正确答案是13 注意: 连续的减法和除法,应该遵守左结合的规定. 连续除法要打括号,否则会引起歧义 设计思想: 1.