文档章节

遍历二叉树获取数据

我只是一只小小鸟
 我只是一只小小鸟
发布于 2016/11/15 15:44
字数 342
阅读 12
收藏 0

1.需求

假装有图,因为图太大传不上去。

tree 的初始值(1(2,3(4,5(69))8)))

2.具体实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    /// <summary>
    /// 设计树结构
    /// </summary>
    public sealed class Tree
    {
        private int _NodeValue;//节点值
        private Tree _LeftChlidNode;//左节点
        private Tree _RightChlidNode;//右节点
        /// <summary>
        /// 获取节点值
        /// </summary>
        /// <returns></returns>
        public int GetNodeValue()
        {
            return _NodeValue;
        }
        /// <summary>
        /// 设置节点值
        /// </summary>
        /// <param name="value"></param>
        public void SetNodeValue(int value)
        {
            _NodeValue = value;
        }
        /// <summary>
        /// 获取左节点
        /// </summary>
        /// <returns></returns>
        public Tree GetLeftChlid()
        {
            if (_LeftChlidNode == null)
                _LeftChlidNode = new Tree();
            return _LeftChlidNode;
        }
        /// <summary>
        /// 获取右节点
        /// </summary>
        /// <returns></returns>
        public Tree GetRightChild()
        {
            if (_RightChlidNode == null)
                _RightChlidNode = new Tree();
            return _RightChlidNode;
        }
    }

    /// <summary>
    /// 测试
    /// </summary>
    public sealed class test
    {
        List<int> result = new List<int>();
        /// <summary>
        /// 树转list集合
        /// </summary>
        /// <param name="tree">头结点</param>
        /// <returns></returns>
        public List<int> TreeConvertToList(Tree tree)
        {
            if (tree == null)
                return null;
            Tree leftnode = tree.GetLeftChlid();
            Tree rightnode = tree.GetRightChild();
            if (leftnode.GetNodeValue() != 0)
            {
                result.Add(leftnode.GetNodeValue());
                TreeConvertToList(leftnode);
            }
            if (rightnode.GetNodeValue() != 0)
            {
                result.Add(rightnode.GetNodeValue());
                TreeConvertToList(rightnode);
            }
            return result;
        }

        /// <summary>
        /// 初始化树
        /// </summary>
        /// <param name="tree"></param>
        /// <returns></returns>
        public Tree InialTree( Tree tree)
        {
            Tree p0_0 = tree.GetLeftChlid();
            p0_0.SetNodeValue(1);
            Tree p0_1 = tree.GetRightChild();
            p0_1.SetNodeValue(8);
            Tree a1 = p0_0.GetLeftChlid();
            a1.SetNodeValue(2);
            Tree a2 = p0_0.GetRightChild();
            a2.SetNodeValue(3);
            Tree b1 = a2.GetLeftChlid();
            b1.SetNodeValue(4);
            Tree b2 = a2.GetRightChild();
            b2.SetNodeValue(5);
            Tree c1 = b2.GetRightChild();
            c1.SetNodeValue(69);
            return tree;
        }
    }

}

3.调用显示

 class Program
    {
        static void Main(string[] args)
        {
            test test = new test();
            Tree Roottree = new Tree();//根部
             Roottree=  test.InialTree( Roottree);
            List<int> result = test.TreeConvertToList(Roottree);
            //循环输出
            foreach (int     item in result)
            {
                Console.Write(item.ToString());
                Console.Write(",");
                
            }
            Console.Read();
        }
    }

 

© 著作权归作者所有

我只是一只小小鸟
粉丝 14
博文 102
码字总数 53116
作品 1
荆州
程序员
私信 提问
iOS-数据结构之链表以及二叉树

(一)前言 对于频繁使用或者是操作的数据应当使用链表,提升效率; (1)链表的优点:链表插入和删除节点付出的代价较小,主要的操作在于prev或next指针的重指向。缺点:链表不能通过下标或...

麦兜卖鱼丸
2016/11/07
149
2
数据结构分析之二叉树

概述 在分析树形结构之前,先看一下树形结构在整个数据结构中的位置 数据结构 当然,没有图,现在还没有足够的水平去分析图这种太复杂的数据结构,表数据结构包含线性表跟链表,也就是经常说...

wustor
2017/11/06
0
0
python环境下使用mysql数据及数据结构和二叉树算法(图)

python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cursor-->操作-->关闭cursor->关闭connection->结束......

原创小博客
2018/08/26
26
0
二叉树简单操作(下)

一、二叉树基本操作  1. 求二叉树的深度。(树的深度:树中所有节点的层次的最大值称为该树的深度)  2. 求二叉树叶子结点的个数。(叶子节点:度为0的结点称为叶结点,叶节点也称为终端节点...

qq_38646470
2018/01/22
0
0
LeetCode算法题-Merge Two Binary Trees(Java实现)

这是悦乐书的第274次更新,第290篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第142题(顺位题号是617)。提供两个二叉树,将其合并为新的二叉树,也可以在其中一个二叉树上...

小川94
03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

parseint和isNaN用法

本文转载于:专业的前端网站➭parseint和isNaN用法 <!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body><script> var a='12'; alert......

前端老手
23分钟前
3
0
Kylin 精确去重在用户行为分析中的妙用

作者:史少锋,Apache Kylin committer & PMC,2019/10/11 在上次文章《如何在 1 秒内做到大数据精准去重》中,我们介绍了 Apache Kylin 为什么要支持大数据集上的精确去重,以及基于 Bitmap...

ApacheKylin
34分钟前
3
0
学习记录(二) es6基本语法(rest参数,模板化,axios模块,拦截器)

日常学习记录 模块化:把一个大文件分成多个小文件,按照一定规范进行拼接 es5写法: 导出:module.exports = 数据 导入:require("路径") /路径未添加后缀名时 //默认添加.js //把路径作为文件名...

Pole丶逐
38分钟前
3
0
以程序员的角度怎么购买一台「性价比高的电视」

前俩天有小伙伴在我的文章下留言,说能否把 【国内电视机都介绍一下】,今天我已在TV端开发多年的程序员的角度。谈谈已程序员的角度如何购买一台性价比高的电视。 国内大的电视机品牌介绍 长...

我们都很努力着
41分钟前
2
0
PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
47分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部