zoukankan      html  css  js  c++  java
  • 二叉树遍历二叉树的实现及先序、中序、后序遍历

    最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--二叉树遍历

        

            定义

                        二叉树:在数据结构中,二叉树是每一个节点最多有两个子树的树结构。常通子树被称作为

                 “左子树”和右子树。二叉树常通被用于现实二叉查找树和二叉堆。

        

            特色

                      二叉树的每一个节点最多只有两颗子树(不存在度大于2的结点),要需注意的是二叉树的子树

                 是有阁下之分的,序次不能倒颠。其第i层最多有二叉树和遍历个结点;深度为k的二叉树最多有二叉树和遍历

                 个结点;对于意任一颗二叉树T,如果其叶子结点树为n0,度为2的结点树为n2,则n0=n2 + 2(根结

                 点除外)。

                              二叉树和遍历

        

             存储表现

                      二叉树可以应用数组或者序顺表来表现,种这现实方法更有利于紧凑的存储和更好的拜访

                 局部性,但是他要需续连的存储空间,在极端的况情下,如果一颗二叉树只有右子树,那么空

                 间的糟蹋将会异常的严峻。

                      二叉树还可以应用表链的存储方法来现实,这也是推荐的现实方法。在Java中体具的树节点

                 的体具表现况情如下:

    class TreeNode<T> {
    		private T data;
    		private TreeNode<T> leftNode;
    		private TreeNode<T> rightNode;
    
    		public TreeNode(T data, TreeNode<T> leftNode, TreeNode<T> rightNode) {
    			this.data = data;
    			this.leftNode = leftNode;
    			this.rightNode = rightNode;
    		}
    }

                  对于二叉树的体具作操笔者不会去具体的现实,感兴趣的是二叉树的遍历方法。

        

             二叉树的遍历

                        对于二叉树的遍历方法一般分为三种先序、中序、后序三种方法

        

                     先序遍历

                      若二叉树为空,则不行进任何作操:否则

                           1、拜访根结点。

                           2、先序方法遍历左子树。

                           3、先序遍历右子树。

        

                    中序遍历

                      若二叉树为空,则不行进任何作操:否则

                           1、中序遍历左子树。

                           2、拜访根结点。

                           3、中序遍历右子树。

        

                   后序遍历

                      若二叉树为空,则不行进任何作操:否则

                           1、后序遍历左子树。

                           2、后序遍历右子树。

                           3、放问根结点。

                   遍历的况情如下:

                     二叉树和遍历

                    二叉树遍历的码代现实:

        每日一道理
    青春,有嬉笑声与哭泣声夹杂的年华,青春的少年是蓝天中翱翔的幼鹰,虽然没有完全长大,有些稚气,有些懵懂,脱不开父母的双手却极力想去找寻属于自己的一片天空,为的是一时的激情,为的是一种独自翱翔的感觉!
    package com.kiritor;
    
    /**
     * Java二叉树的现实 以及遍历
     * 
     * @author Kiritor
     */
    public class BinaryTree {
    	
    	/**
    	 * 出输结点信息*/
    	public void printNode(TreeNode<String> node)
    	{
    		System.out.print(node.getData()+"  ");
    	}
    	/**
    	 * 定义结点
    	 * */
    	class TreeNode<T> {
    		private T data;
    		private TreeNode<T> leftNode;
    		private TreeNode<T> rightNode;
    
    		public TreeNode(T data, TreeNode<T> leftNode, TreeNode<T> rightNode) {
    			this.data = data;
    			this.leftNode = leftNode;
    			this.rightNode = rightNode;
    		}
    		
    
    		public T getData() {
    			return data;
    		}
    
    		public void setData(T data) {
    			this.data = data;
    		}
    
    		public TreeNode<T> getLeftNode() {
    			return leftNode;
    		}
    
    		public void setLeftNode(TreeNode<T> leftNode) {
    			this.leftNode = leftNode;
    		}
    
    		public TreeNode<T> getRightNode() {
    			return rightNode;
    		}
    
    		public void setRightNode(TreeNode<T> rightNode) {
    			this.rightNode = rightNode;
    		}
    
    	}
    
    	// 初始化二叉树
    	public TreeNode<String> init() {
    		TreeNode<String> D = new TreeNode<String>("D", null, null);
    		TreeNode<String> H = new TreeNode<String>("H", null, null);
    		TreeNode<String> I = new TreeNode<String>("I", null, null);
    		TreeNode<String> J = new TreeNode<String>("J", null, null);
    		TreeNode<String> P = new TreeNode<String>("P", null, null);
    		TreeNode<String> G = new TreeNode<String>("G", P, null);
    		TreeNode<String> F = new TreeNode<String>("F", null, J);
    		TreeNode<String> E = new TreeNode<String>("E", H, I);
    		TreeNode<String> B = new TreeNode<String>("B", D, E);
    		TreeNode<String> C = new TreeNode<String>("C", F, G);
    		TreeNode<String> A = new TreeNode<String>("A", B, C);
    		return A;
    	}
    	/**先序遍历二叉树
    	 * */
    	public void xianIterator(TreeNode<String> node)
    	{
    		this.printNode(node);
    		if(node.getLeftNode()!=null)
    		{
    			this.xianIterator(node.getLeftNode());
    		}
    		if(node.getRightNode()!=null)
    		{
    			this.xianIterator(node.getRightNode());
    		}
    	}
    	
    	/**
    	 * 中序遍历二叉树*/
    	public void zhongIterator(TreeNode<String> node)
    	{
    		if(node.getLeftNode()!=null)
    		{
    			this.zhongIterator(node.getLeftNode());
    		}
    		this.printNode(node);
    		if(node.getRightNode()!=null)
    		{
    			this.zhongIterator(node.getRightNode());
    		}
    	}
    	
    	/**后序遍历二叉树*/
    	public void houIterator(TreeNode<String> node)
    	{
    		if(node.getLeftNode()!=null)
    		{
    			this.houIterator(node.getLeftNode());
    		}
    		if(node.getRightNode()!=null)
    		{
    			this.houIterator(node.getRightNode());
    		}
    		this.printNode(node);
    	}
    	
    	public static void main(String[] args) {
    	   BinaryTree binaryTree = new BinaryTree();
    	   TreeNode<String> node = binaryTree.init();
    	   System.out.println("先序遍历的况情");
    	   binaryTree.xianIterator(node);
    	   System.out.println("\n中序遍历的况情");
    	   binaryTree.zhongIterator(node);
    	   System.out.println("\n后序遍历的况情");
    	   binaryTree.houIterator(node);
    	}
    	
    }

                      

        二叉树和遍历

    文章结束给大家分享下程序员的一些笑话语录: 问路
    有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
    下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
    热气球上的人说:“你一定是在 IT 部门做技术工作”。
    “没错”,地面上的人说到,“你是怎么知道的?”
    “呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
    地面上的人说,“你一定是管理层的人”。
    “没错”,热气球上的人说,“可是你是怎么知道的?”
    “呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。

  • 相关阅读:
    [enum]enum的用法
    gridview汇出EXCEL (ExportGridViewToExcel(dt, HttpContext.Current.Response);)
    c#用正则表达式判断字符串是否全是数字、小数点、正负号组成 Regex reg = new Regex(@"^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$");
    GridView里的文本框改变事件
    转发 win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Files 解决方案
    验证上转文件类型的正则表达式
    EXCEL设置选中单元格样式
    转发!HTML 复选框 checkbox 的 JavaScript 的全选和全反选
    dataGrid转换dataTable
    wince mobile环境下播放WAV声音
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3057314.html
Copyright © 2011-2022 走看看