技术问答-23 javabean创建一个二叉树,左右两个叶子节点 (1)要求每个结点都有两个叶子,每个叶子节点可以找到父节点也可以找到左右两个子节点 (2)提供2中遍历方法

javabean创建一个二叉树,左右两个叶子节点
(1)要求每个结点都有两个叶子,每个叶子节点可以找到父节点也可以找到左右两个子节点
(2)提供2中遍历方法

随便画了一个二叉树
在这里插入图片描述
前序遍历: 根结点 —> 左子树 —> 右子树
遍历上边的树:1,5,4,3,2,8,7,9,6
(1) 根节点 1
(2)遍历1的左树 根节点 5
(3)遍历5的左树 根节点4 无左右树
(4)遍历5的右数 根节点3
(5)遍历3的左树 2 无左右树
(6)遍历3的右树 8 无左右树
(7)遍历1的右树 根节点7
(8)遍历7的左树 根节点9 没有左右树
(9)遍历7的右树 根节点6 没有左右树
(10)总的顺序是:1,5,4,3,2,8,7,8,6
中序遍历:左子树—> 根结点 —> 右子树
遍历上边的树:4,5,2,3,8,1,9,7,6
后序遍历:左子树 —> 右子树 —> 根结点
遍历上边的树:4,2,8,3,5,9,6,7,1

package com;

/**
 * 二叉树实体类
 * 
 * @author Administrator
 *
 */
public class Node {
	// 节点数据
	String value;
	// 左树
	Node left;
	// 右树
	Node right;
	// 父节点
	Node parent;

	// 构造 构建根节点
	Node(String value) {
		this.value = value;
		this.left = null;
		this.right = null;
		this.parent = null;
	}

	// 设置左树
	public Node setLeft(Node left) {
		left.parent = this;
		this.left = left;
		return left;
	}

	// 设置右树
	public Node setRight(Node right) {
		right.parent = this;
		this.right = right;
		return right;
	}

	// 前序遍历 根节点->左子树->右子数
	public void preOrderTraversal(Node node) {
		if (node == null) {
			return;
		}
		System.out.println(node.value);
		preOrderTraversal(node.left);
		preOrderTraversal(node.right);
	}

	// 中序遍历 左子树->根节点->右子树
	public void sequentialTraversal(Node node) {
		if (node == null) {
			return;
		}
		sequentialTraversal(node.left);
		System.out.println(node.value);
		sequentialTraversal(node.right);
	}

	// 后序遍历 左子树->右子数->根节点
	public void postorderTraversal(Node node) {
		if (node == null) {
			return;
		}
		postorderTraversal(node.left);
		postorderTraversal(node.right);
		System.out.println(node.value);
	}

	public static void main(String[] args) {
		//手动构建上边例子的二叉树 
		Node node = new Node("1");
		node.setLeft(new Node("5")).setLeft(new Node("4"));
		node.left.setRight(new Node("3")).setLeft(new Node("2"));
		node.left.right.setRight(new Node("8"));
		node.setRight(new Node("7")).setLeft(new Node("9"));
		node.right.setRight(new Node("6"));
		
//		node.preOrderTraversal(node);
//		node.sequentialTraversal(node);
		node.postorderTraversal(node);
	}
}

发布了431 篇原创文章 · 获赞 91 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/qq_36291682/article/details/89415845