二叉树算法的设计

it2022-05-05  184

二叉树算法的设计的总路线:明确一个节点要做的事情,然后剩下的事抛给框架。

void traverse(TreeNode root) { // root 需要做什么?在这做。 // 其他的不用 root 操心,抛给框架 traverse(root.left); traverse(root.right); }

举两个简单的例子体会一下这个思路,热热身。

1. 如何把二叉树所有的节点中的值加一?

void plusOne(TreeNode root) { if (root == null) return; root.val += 1; plusOne(root.left); plusOne(root.right); }

2. 如何判断两棵二叉树是否完全相同?

boolean isSameTree(TreeNode root1, TreeNode root2) { // 都为空的话,显然相同 if (root1 == null && root2 == null) return true; // 一个为空,一个非空,显然不同 if (root1 == null || root2 == null) return false; // 两个都非空,但 val 不一样也不行 if (root1.val != root2.val) return false; // root1 和 root2 该比的都比完了 return isSameTree(root1.left, root2.left) && isSameTree(root1.right, root2.right); }

 

转载于:https://www.cnblogs.com/aoeiuvAQU/p/11204865.html


最新回复(0)