二叉樹反轉(java版)

2021-07-08 20:20:37 字數 1088 閱讀 1199

// definition for a binary tree node.

class

treenode

}

方法一:遞迴方式

最容易想到的方式最先實現。

//遞迴方式

public treenode inverttree(treenode root)

//遞迴反轉左右子樹

treenode temp = root.left;

root.left = inverttree(root.right);

root.right = inverttree(temp);

return root;

}

方法二:非遞迴層次遍歷,借助棧

public treenode inverttree2(treenode root) 

stack

stack

=new

stack

<>();

stack

.push(root);//先將根節點壓入堆疊

while (stack

.size() >

0) //右子樹不為空,將右子樹入棧

if (temp.right !=

null)

}return root;

}

方法三:非遞迴層次遍歷,借助於佇列,操作與棧類似,只不過元素是先進先出。

public treenode inverttree3(treenode root) 

//linkedlist實現了集合框架的queue介面

queue

queue

=new linkedlist<>();

queue

.offer(root);//加入元素

while (queue

.size() >

0) if (temp.right !=

null)

}return root;

}

LeetCode (二叉樹)反轉二叉樹

遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...

二叉樹反轉

二叉樹反轉,遞迴實現比較簡單,只需要交換父母節點的左右子節點就行,遞迴反轉左右子節點。homebrew作者面試google時解不出這道題而被拒,本文給出c實現的二叉樹反轉,包括前中後遍歷,二叉樹的建立等。反轉 如下 void inversebtree tnode root tnode tmp roo...

java版遍歷二叉樹

首先編寫二叉樹類binarytree,如下 package package2 public class binarytree public void insert binarytree root,int data else else else 當建立好二叉樹類後可以建立二叉樹例項,並實現二叉樹的先根...