二叉树的遍历与删除(递归实现)

可采用如下方式判断 复制代码 代码如下: if&&count//判断是否有Get参数 { if//判断所需要的参数是否存在,isset用来检测变量是否设置,返回true or false { $para=$_GET["para"];//存在 } }

1.引言

这一段时间都没看java数据结构,松懈了。今天记录下二叉树的遍历,建树,删除节点。下一章 会用非递归的方式实现一下。

2.正题

新建一个TreeNode类:

public class TreeNode {

    private String tag;
    private int number;
    private TreeNode leftNode;
    private TreeNode rightNode;
    //自己实现get、set
}

金沙官网线上,2.1 建立二叉树

递归参数:等待插入的节点A,父节点B(假如插入成功)
核心思想:假如A.number<B.number。表示在B的左边。然后在判断B.leftNode 是否为null;为null,就将A插进入,不为null,就进行递归。同理A.number>B.number一样。

实现代码:

   public TreeNode rootNode;
   public void buildTree(TreeNode treeNode,TreeNode binaryTree){
       if (rootNode==null){
          rootNode=treeNode;
          rootNode.setLeftNode(null);
          rootNode.setRightNode(null);
          return;
       }
       if (treeNode.getNumber()<binaryTree.getNumber()){
           if (binaryTree.getLeftNode()!=null){
               buildTree(treeNode,binaryTree.getLeftNode());
           }else {
               binaryTree.setLeftNode(treeNode);
           }
       }else {
           if (binaryTree.getRightNode()!=null){
               buildTree(treeNode,binaryTree.getRightNode());
           }else {
               binaryTree.setRightNode(treeNode);
           }
       }
   }

main函数:

BinaryTree binaryTree=new BinaryTree();
       List<TreeNode>treeNodes=new ArrayList<>();
       treeNodes.add(new TreeNode("A",6));
       treeNodes.add(new TreeNode("B",3));
       treeNodes.add(new TreeNode("C",7));
       treeNodes.add(new TreeNode("D",1));
       treeNodes.add(new TreeNode("E",4));
       treeNodes.add(new TreeNode("F",9));
       treeNodes.forEach(treeNode -> {binaryTree.buildTree(treeNode,binaryTree.rootNode);});

本文由金沙官网线上发布于编程,转载请注明出处:二叉树的遍历与删除(递归实现)

您可能还会对下面的文章感兴趣: