递归方式遍历二叉树:

/*
	 * 先根序
	 */
    public static void beforeShow(Node node) {
    	if (node == null) {
    		return;
    	}
    	System.out.println(node.data);
    	beforeShow(node.left);
    	beforeShow(node.right);
    }

    /*
	 * 中根序
	 */
    public static void middleShow(Node node) {
    	if (node == null) {
    		return;
    	}
    	middleShow(node.left);
    	System.out.println(node.data);
    	middleShow(node.right);
    }

    /*
	 * 后根序
	 */
    public static void lastShow(Node node) {
    	if (node == null) {
    		return;
    	}
    	lastShow(node.left);
    	lastShow(node.right);
    	System.out.println(node.data);
    }

  

递归遍历二叉树:

时间: 2024-10-14 13:50:32

递归方式遍历二叉树:的相关文章

用递归方式遍历二叉树

问题 思路说明 遍历二叉树的方法有广度优先和深度优先两类,下面阐述的是深度优先. 以下图的二叉树为例: 先定义三个符号标记: 访问结点本身(N) 遍历该结点的左子树(L) 遍历该结点的右子树(R) 有四种方式: 前序遍历(PreorderTraversal,NLR):先访问根结点,然后遍历其左右子树 中序遍历(InorderTraversal,LNR):先访问左子树,然后访问根节点,再访问右子树 后序遍历(PostorderTraversal,LRN):先访问左右子树,再访问根结点 层序遍历(l

非递归方式遍历二叉树

/** * 非递归方式的先根序 * @param root */ public static void preOrder(Node root){ Stack<Node> stack = new Stack<Node>(); while (!stack.isEmpty() || root != null) { while (root != null) { System.out.println(root.data); stack.push(root); root = root.left

二叉树问题:递归方式实现二叉树先序、中序、后序遍历

问题描述: 用递归方式实现二叉树的先序.中序.后序遍历. 算法实现: //二叉树节点private class Node { public int value; public Node left; public Node right; public Node(int value) { this.value = value; }} //前序遍历public void preOrderRecur(Node head) { if (head == null) { return; } System.ou

数据结构 递归和非递归方式实现二叉树先序、中序和后序遍历

二叉树的先序遍历顺序是根.左.右:中序遍历顺序是左.根.右:后序遍历顺序是左.右.根. 递归方式实现如下: 1 public class TreeNode { 2 private int value; 3 private TreeNode left, right; 4 5 public TreeNode(int data) { 6 value = data; 7 } 8 9 // 递归方式实现先序遍历 10 public void preorder(TreeNode treeNode) { 11

非递归实现遍历二叉树

非递归实现二叉树主要利用queue和stack的特点,对于层次遍历二叉树主要运用queue队头出,队尾插入,先进先出的特点,先将根插入队尾,然后输出队头的元素,同时将队头的左子树和右子树元素插入队尾,依次输出输出队头的元素,同时将队头的左子树和右子树元素插入队尾,直到队列为空. void levelorder() { queue<BinaryTreeNode<T> *>s; if (_root == NULL) return; s.push(_root); while (!s.em

非递归前序遍历二叉树

#include<stdio.h> #include<stdlib.h> //定义结构体 typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiNode,* pBiNode; pBiNode stack[100]; void later(pBiNode * p) //前序创建树 { char ch; scanf("%c",&ch); if(ch=='#') *p=NU

UVa 839 (递归方式读取二叉树) Not so Mobile

题意: 递归的方式输入一个树状天平(一个天平下面挂的不一定是砝码还可能是一个子天平),判断这个天平是否能满足平衡条件,即W1 * D1 == W2 * D2. 递归的方式处理输入数据感觉很巧妙,我虽然能理解,但自己是写不出来的. 这里的参数是传引用,所以是在递归回来的时候才会赋值的. 1 //#define LOCAL 2 #include <iostream> 3 using namespace std; 4 5 bool solve(int& w) 6 { 7 int w1, d1

递归实现遍历二叉树

1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <script> 9 var treeNodes = [ 10 { 11 id: "1", 12 name

非递归方式遍历文件夹,取得所有子目录和文件的文件名和大小

void BuildTree() { FileNode nodeD; nodeD.fileName = _T("D"); nodeD.fileSize = 15; FileNode nodeE; nodeE.fileName = _T("E"); nodeE.fileSize = 10; FileNode nodeF; nodeF.fileName = _T("F"); nodeF.fileSize = 20; FileNode nodeG; n